diff --git a/gsdx/GPUDrawScanline.cpp b/gsdx/GPUDrawScanline.cpp index 2f23c35..2a0b8e3 100644 --- a/gsdx/GPUDrawScanline.cpp +++ b/gsdx/GPUDrawScanline.cpp @@ -35,7 +35,7 @@ GPUDrawScanline::~GPUDrawScanline() // IDrawScanline -bool GPUDrawScanline::BeginDraw(const GSRasterizerData* data) +void GPUDrawScanline::BeginDraw(const GSRasterizerData* data, DrawScanlinePtr* dsf, DrawSolidRectPtr* dsrf) { GPUDrawingEnvironment& env = m_state->m_env; @@ -71,9 +71,8 @@ bool GPUDrawScanline::BeginDraw(const GSRasterizerData* data) m_env.a = GSVector4i(env.PRIM.ABE ? 0xffffffff : 0); m_env.md = GSVector4i(env.STATUS.MD ? 0x80008000 : 0); - m_dsf = m_ds[m_env.sel]; - - return false; + *dsf = m_ds[m_env.sel]; + *dsrf = NULL; // TODO } void GPUDrawScanline::SetupPrim(GS_PRIM_CLASS primclass, const GSVertexSW* vertices, const GSVertexSW& dscan) @@ -118,20 +117,6 @@ void GPUDrawScanline::SetupPrim(GS_PRIM_CLASS primclass, const GSVertexSW* verti m_env.dc8 = dtc8.uph16(dtc8); } -void GPUDrawScanline::DrawScanline(int top, int left, int right, const GSVertexSW& v) -{ - (this->*m_dsf)(top, left, right, v); -} - -void GPUDrawScanline::DrawSolidRect(const GSVector4i& r, const GSVertexSW& v) -{ - ASSERT(0); -} - -IDrawScanline::DrawScanlinePtr GPUDrawScanline::GetDrawScanlinePtr() -{ - return m_dsf; -} void GPUDrawScanline::SampleTexture(int pixels, DWORD ltf, DWORD tlu, DWORD twin, GSVector4i& test, const GSVector4i& s, const GSVector4i& t, GSVector4i* c) { @@ -443,267 +428,267 @@ void GPUDrawScanline::Init() { for(int i = 0; i < countof(m_ds); i++) { - m_ds[i] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineT; + m_ds[i] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanline; } #ifdef FAST_DRAWSCANLINE - m_ds[0x00] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x00>; - m_ds[0x01] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x01>; - m_ds[0x02] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x02>; - m_ds[0x03] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x03>; - m_ds[0x04] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x04>; - m_ds[0x05] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x05>; - m_ds[0x06] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x06>; - m_ds[0x07] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x07>; - m_ds[0x08] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x08>; - m_ds[0x09] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x09>; - m_ds[0x0a] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x0a>; - m_ds[0x0b] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x0b>; - m_ds[0x0c] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x0c>; - m_ds[0x0d] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x0d>; - m_ds[0x0e] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x0e>; - m_ds[0x0f] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x0f>; - m_ds[0x10] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x10>; - m_ds[0x11] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x11>; - m_ds[0x12] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x12>; - m_ds[0x13] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x13>; - m_ds[0x14] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x14>; - m_ds[0x15] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x15>; - m_ds[0x16] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x16>; - m_ds[0x17] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x17>; - m_ds[0x18] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x18>; - m_ds[0x19] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x19>; - m_ds[0x1a] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x1a>; - m_ds[0x1b] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x1b>; - m_ds[0x1c] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x1c>; - m_ds[0x1d] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x1d>; - m_ds[0x1e] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x1e>; - m_ds[0x1f] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x1f>; - m_ds[0x20] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x20>; - m_ds[0x21] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x21>; - m_ds[0x22] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x22>; - m_ds[0x23] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x23>; - m_ds[0x24] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x24>; - m_ds[0x25] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x25>; - m_ds[0x26] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x26>; - m_ds[0x27] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x27>; - m_ds[0x28] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x28>; - m_ds[0x29] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x29>; - m_ds[0x2a] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x2a>; - m_ds[0x2b] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x2b>; - m_ds[0x2c] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x2c>; - m_ds[0x2d] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x2d>; - m_ds[0x2e] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x2e>; - m_ds[0x2f] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x2f>; - m_ds[0x30] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x30>; - m_ds[0x31] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x31>; - m_ds[0x32] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x32>; - m_ds[0x33] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x33>; - m_ds[0x34] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x34>; - m_ds[0x35] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x35>; - m_ds[0x36] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x36>; - m_ds[0x37] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x37>; - m_ds[0x38] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x38>; - m_ds[0x39] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x39>; - m_ds[0x3a] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x3a>; - m_ds[0x3b] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x3b>; - m_ds[0x3c] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x3c>; - m_ds[0x3d] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x3d>; - m_ds[0x3e] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x3e>; - m_ds[0x3f] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x3f>; - m_ds[0x40] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x40>; - m_ds[0x41] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x41>; - m_ds[0x42] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x42>; - m_ds[0x43] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x43>; - m_ds[0x44] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x44>; - m_ds[0x45] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x45>; - m_ds[0x46] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x46>; - m_ds[0x47] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x47>; - m_ds[0x48] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x48>; - m_ds[0x49] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x49>; - m_ds[0x4a] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x4a>; - m_ds[0x4b] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x4b>; - m_ds[0x4c] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x4c>; - m_ds[0x4d] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x4d>; - m_ds[0x4e] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x4e>; - m_ds[0x4f] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x4f>; - m_ds[0x50] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x50>; - m_ds[0x51] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x51>; - m_ds[0x52] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x52>; - m_ds[0x53] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x53>; - m_ds[0x54] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x54>; - m_ds[0x55] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x55>; - m_ds[0x56] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x56>; - m_ds[0x57] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x57>; - m_ds[0x58] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x58>; - m_ds[0x59] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x59>; - m_ds[0x5a] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x5a>; - m_ds[0x5b] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x5b>; - m_ds[0x5c] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x5c>; - m_ds[0x5d] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x5d>; - m_ds[0x5e] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x5e>; - m_ds[0x5f] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x5f>; - m_ds[0x60] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x60>; - m_ds[0x61] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x61>; - m_ds[0x62] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x62>; - m_ds[0x63] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x63>; - m_ds[0x64] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x64>; - m_ds[0x65] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x65>; - m_ds[0x66] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x66>; - m_ds[0x67] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x67>; - m_ds[0x68] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x68>; - m_ds[0x69] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x69>; - m_ds[0x6a] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x6a>; - m_ds[0x6b] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x6b>; - m_ds[0x6c] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x6c>; - m_ds[0x6d] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x6d>; - m_ds[0x6e] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x6e>; - m_ds[0x6f] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x6f>; - m_ds[0x70] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x70>; - m_ds[0x71] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x71>; - m_ds[0x72] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x72>; - m_ds[0x73] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x73>; - m_ds[0x74] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x74>; - m_ds[0x75] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x75>; - m_ds[0x76] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x76>; - m_ds[0x77] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x77>; - m_ds[0x78] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x78>; - m_ds[0x79] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x79>; - m_ds[0x7a] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x7a>; - m_ds[0x7b] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x7b>; - m_ds[0x7c] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x7c>; - m_ds[0x7d] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x7d>; - m_ds[0x7e] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x7e>; - m_ds[0x7f] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x7f>; - m_ds[0x80] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x80>; - m_ds[0x81] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x81>; - m_ds[0x82] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x82>; - m_ds[0x83] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x83>; - m_ds[0x84] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x84>; - m_ds[0x85] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x85>; - m_ds[0x86] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x86>; - m_ds[0x87] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x87>; - m_ds[0x88] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x88>; - m_ds[0x89] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x89>; - m_ds[0x8a] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x8a>; - m_ds[0x8b] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x8b>; - m_ds[0x8c] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x8c>; - m_ds[0x8d] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x8d>; - m_ds[0x8e] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x8e>; - m_ds[0x8f] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x8f>; - m_ds[0x90] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x90>; - m_ds[0x91] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x91>; - m_ds[0x92] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x92>; - m_ds[0x93] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x93>; - m_ds[0x94] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x94>; - m_ds[0x95] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x95>; - m_ds[0x96] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x96>; - m_ds[0x97] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x97>; - m_ds[0x98] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x98>; - m_ds[0x99] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x99>; - m_ds[0x9a] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x9a>; - m_ds[0x9b] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x9b>; - m_ds[0x9c] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x9c>; - m_ds[0x9d] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x9d>; - m_ds[0x9e] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x9e>; - m_ds[0x9f] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0x9f>; - m_ds[0xa0] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xa0>; - m_ds[0xa1] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xa1>; - m_ds[0xa2] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xa2>; - m_ds[0xa3] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xa3>; - m_ds[0xa4] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xa4>; - m_ds[0xa5] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xa5>; - m_ds[0xa6] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xa6>; - m_ds[0xa7] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xa7>; - m_ds[0xa8] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xa8>; - m_ds[0xa9] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xa9>; - m_ds[0xaa] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xaa>; - m_ds[0xab] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xab>; - m_ds[0xac] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xac>; - m_ds[0xad] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xad>; - m_ds[0xae] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xae>; - m_ds[0xaf] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xaf>; - m_ds[0xb0] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xb0>; - m_ds[0xb1] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xb1>; - m_ds[0xb2] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xb2>; - m_ds[0xb3] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xb3>; - m_ds[0xb4] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xb4>; - m_ds[0xb5] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xb5>; - m_ds[0xb6] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xb6>; - m_ds[0xb7] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xb7>; - m_ds[0xb8] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xb8>; - m_ds[0xb9] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xb9>; - m_ds[0xba] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xba>; - m_ds[0xbb] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xbb>; - m_ds[0xbc] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xbc>; - m_ds[0xbd] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xbd>; - m_ds[0xbe] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xbe>; - m_ds[0xbf] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xbf>; - m_ds[0xc0] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xc0>; - m_ds[0xc1] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xc1>; - m_ds[0xc2] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xc2>; - m_ds[0xc3] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xc3>; - m_ds[0xc4] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xc4>; - m_ds[0xc5] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xc5>; - m_ds[0xc6] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xc6>; - m_ds[0xc7] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xc7>; - m_ds[0xc8] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xc8>; - m_ds[0xc9] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xc9>; - m_ds[0xca] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xca>; - m_ds[0xcb] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xcb>; - m_ds[0xcc] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xcc>; - m_ds[0xcd] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xcd>; - m_ds[0xce] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xce>; - m_ds[0xcf] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xcf>; - m_ds[0xd0] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xd0>; - m_ds[0xd1] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xd1>; - m_ds[0xd2] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xd2>; - m_ds[0xd3] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xd3>; - m_ds[0xd4] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xd4>; - m_ds[0xd5] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xd5>; - m_ds[0xd6] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xd6>; - m_ds[0xd7] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xd7>; - m_ds[0xd8] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xd8>; - m_ds[0xd9] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xd9>; - m_ds[0xda] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xda>; - m_ds[0xdb] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xdb>; - m_ds[0xdc] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xdc>; - m_ds[0xdd] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xdd>; - m_ds[0xde] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xde>; - m_ds[0xdf] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xdf>; - m_ds[0xe0] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xe0>; - m_ds[0xe1] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xe1>; - m_ds[0xe2] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xe2>; - m_ds[0xe3] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xe3>; - m_ds[0xe4] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xe4>; - m_ds[0xe5] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xe5>; - m_ds[0xe6] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xe6>; - m_ds[0xe7] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xe7>; - m_ds[0xe8] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xe8>; - m_ds[0xe9] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xe9>; - m_ds[0xea] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xea>; - m_ds[0xeb] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xeb>; - m_ds[0xec] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xec>; - m_ds[0xed] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xed>; - m_ds[0xee] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xee>; - m_ds[0xef] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xef>; - m_ds[0xf0] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xf0>; - m_ds[0xf1] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xf1>; - m_ds[0xf2] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xf2>; - m_ds[0xf3] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xf3>; - m_ds[0xf4] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xf4>; - m_ds[0xf5] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xf5>; - m_ds[0xf6] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xf6>; - m_ds[0xf7] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xf7>; - m_ds[0xf8] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xf8>; - m_ds[0xf9] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xf9>; - m_ds[0xfa] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xfa>; - m_ds[0xfb] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xfb>; - m_ds[0xfc] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xfc>; - m_ds[0xfd] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xfd>; - m_ds[0xfe] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xfe>; - m_ds[0xff] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineExT<0xff>; + m_ds[0x00] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x00>; + m_ds[0x01] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x01>; + m_ds[0x02] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x02>; + m_ds[0x03] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x03>; + m_ds[0x04] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x04>; + m_ds[0x05] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x05>; + m_ds[0x06] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x06>; + m_ds[0x07] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x07>; + m_ds[0x08] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x08>; + m_ds[0x09] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x09>; + m_ds[0x0a] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x0a>; + m_ds[0x0b] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x0b>; + m_ds[0x0c] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x0c>; + m_ds[0x0d] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x0d>; + m_ds[0x0e] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x0e>; + m_ds[0x0f] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x0f>; + m_ds[0x10] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x10>; + m_ds[0x11] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x11>; + m_ds[0x12] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x12>; + m_ds[0x13] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x13>; + m_ds[0x14] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x14>; + m_ds[0x15] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x15>; + m_ds[0x16] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x16>; + m_ds[0x17] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x17>; + m_ds[0x18] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x18>; + m_ds[0x19] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x19>; + m_ds[0x1a] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x1a>; + m_ds[0x1b] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x1b>; + m_ds[0x1c] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x1c>; + m_ds[0x1d] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x1d>; + m_ds[0x1e] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x1e>; + m_ds[0x1f] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x1f>; + m_ds[0x20] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x20>; + m_ds[0x21] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x21>; + m_ds[0x22] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x22>; + m_ds[0x23] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x23>; + m_ds[0x24] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x24>; + m_ds[0x25] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x25>; + m_ds[0x26] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x26>; + m_ds[0x27] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x27>; + m_ds[0x28] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x28>; + m_ds[0x29] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x29>; + m_ds[0x2a] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x2a>; + m_ds[0x2b] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x2b>; + m_ds[0x2c] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x2c>; + m_ds[0x2d] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x2d>; + m_ds[0x2e] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x2e>; + m_ds[0x2f] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x2f>; + m_ds[0x30] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x30>; + m_ds[0x31] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x31>; + m_ds[0x32] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x32>; + m_ds[0x33] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x33>; + m_ds[0x34] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x34>; + m_ds[0x35] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x35>; + m_ds[0x36] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x36>; + m_ds[0x37] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x37>; + m_ds[0x38] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x38>; + m_ds[0x39] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x39>; + m_ds[0x3a] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x3a>; + m_ds[0x3b] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x3b>; + m_ds[0x3c] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x3c>; + m_ds[0x3d] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x3d>; + m_ds[0x3e] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x3e>; + m_ds[0x3f] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x3f>; + m_ds[0x40] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x40>; + m_ds[0x41] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x41>; + m_ds[0x42] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x42>; + m_ds[0x43] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x43>; + m_ds[0x44] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x44>; + m_ds[0x45] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x45>; + m_ds[0x46] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x46>; + m_ds[0x47] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x47>; + m_ds[0x48] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x48>; + m_ds[0x49] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x49>; + m_ds[0x4a] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x4a>; + m_ds[0x4b] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x4b>; + m_ds[0x4c] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x4c>; + m_ds[0x4d] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x4d>; + m_ds[0x4e] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x4e>; + m_ds[0x4f] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x4f>; + m_ds[0x50] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x50>; + m_ds[0x51] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x51>; + m_ds[0x52] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x52>; + m_ds[0x53] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x53>; + m_ds[0x54] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x54>; + m_ds[0x55] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x55>; + m_ds[0x56] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x56>; + m_ds[0x57] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x57>; + m_ds[0x58] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x58>; + m_ds[0x59] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x59>; + m_ds[0x5a] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x5a>; + m_ds[0x5b] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x5b>; + m_ds[0x5c] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x5c>; + m_ds[0x5d] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x5d>; + m_ds[0x5e] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x5e>; + m_ds[0x5f] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x5f>; + m_ds[0x60] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x60>; + m_ds[0x61] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x61>; + m_ds[0x62] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x62>; + m_ds[0x63] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x63>; + m_ds[0x64] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x64>; + m_ds[0x65] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x65>; + m_ds[0x66] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x66>; + m_ds[0x67] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x67>; + m_ds[0x68] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x68>; + m_ds[0x69] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x69>; + m_ds[0x6a] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x6a>; + m_ds[0x6b] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x6b>; + m_ds[0x6c] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x6c>; + m_ds[0x6d] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x6d>; + m_ds[0x6e] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x6e>; + m_ds[0x6f] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x6f>; + m_ds[0x70] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x70>; + m_ds[0x71] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x71>; + m_ds[0x72] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x72>; + m_ds[0x73] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x73>; + m_ds[0x74] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x74>; + m_ds[0x75] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x75>; + m_ds[0x76] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x76>; + m_ds[0x77] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x77>; + m_ds[0x78] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x78>; + m_ds[0x79] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x79>; + m_ds[0x7a] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x7a>; + m_ds[0x7b] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x7b>; + m_ds[0x7c] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x7c>; + m_ds[0x7d] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x7d>; + m_ds[0x7e] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x7e>; + m_ds[0x7f] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x7f>; + m_ds[0x80] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x80>; + m_ds[0x81] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x81>; + m_ds[0x82] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x82>; + m_ds[0x83] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x83>; + m_ds[0x84] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x84>; + m_ds[0x85] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x85>; + m_ds[0x86] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x86>; + m_ds[0x87] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x87>; + m_ds[0x88] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x88>; + m_ds[0x89] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x89>; + m_ds[0x8a] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x8a>; + m_ds[0x8b] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x8b>; + m_ds[0x8c] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x8c>; + m_ds[0x8d] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x8d>; + m_ds[0x8e] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x8e>; + m_ds[0x8f] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x8f>; + m_ds[0x90] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x90>; + m_ds[0x91] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x91>; + m_ds[0x92] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x92>; + m_ds[0x93] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x93>; + m_ds[0x94] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x94>; + m_ds[0x95] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x95>; + m_ds[0x96] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x96>; + m_ds[0x97] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x97>; + m_ds[0x98] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x98>; + m_ds[0x99] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x99>; + m_ds[0x9a] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x9a>; + m_ds[0x9b] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x9b>; + m_ds[0x9c] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x9c>; + m_ds[0x9d] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x9d>; + m_ds[0x9e] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x9e>; + m_ds[0x9f] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0x9f>; + m_ds[0xa0] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xa0>; + m_ds[0xa1] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xa1>; + m_ds[0xa2] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xa2>; + m_ds[0xa3] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xa3>; + m_ds[0xa4] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xa4>; + m_ds[0xa5] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xa5>; + m_ds[0xa6] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xa6>; + m_ds[0xa7] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xa7>; + m_ds[0xa8] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xa8>; + m_ds[0xa9] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xa9>; + m_ds[0xaa] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xaa>; + m_ds[0xab] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xab>; + m_ds[0xac] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xac>; + m_ds[0xad] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xad>; + m_ds[0xae] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xae>; + m_ds[0xaf] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xaf>; + m_ds[0xb0] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xb0>; + m_ds[0xb1] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xb1>; + m_ds[0xb2] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xb2>; + m_ds[0xb3] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xb3>; + m_ds[0xb4] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xb4>; + m_ds[0xb5] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xb5>; + m_ds[0xb6] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xb6>; + m_ds[0xb7] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xb7>; + m_ds[0xb8] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xb8>; + m_ds[0xb9] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xb9>; + m_ds[0xba] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xba>; + m_ds[0xbb] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xbb>; + m_ds[0xbc] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xbc>; + m_ds[0xbd] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xbd>; + m_ds[0xbe] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xbe>; + m_ds[0xbf] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xbf>; + m_ds[0xc0] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xc0>; + m_ds[0xc1] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xc1>; + m_ds[0xc2] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xc2>; + m_ds[0xc3] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xc3>; + m_ds[0xc4] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xc4>; + m_ds[0xc5] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xc5>; + m_ds[0xc6] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xc6>; + m_ds[0xc7] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xc7>; + m_ds[0xc8] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xc8>; + m_ds[0xc9] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xc9>; + m_ds[0xca] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xca>; + m_ds[0xcb] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xcb>; + m_ds[0xcc] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xcc>; + m_ds[0xcd] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xcd>; + m_ds[0xce] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xce>; + m_ds[0xcf] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xcf>; + m_ds[0xd0] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xd0>; + m_ds[0xd1] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xd1>; + m_ds[0xd2] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xd2>; + m_ds[0xd3] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xd3>; + m_ds[0xd4] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xd4>; + m_ds[0xd5] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xd5>; + m_ds[0xd6] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xd6>; + m_ds[0xd7] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xd7>; + m_ds[0xd8] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xd8>; + m_ds[0xd9] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xd9>; + m_ds[0xda] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xda>; + m_ds[0xdb] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xdb>; + m_ds[0xdc] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xdc>; + m_ds[0xdd] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xdd>; + m_ds[0xde] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xde>; + m_ds[0xdf] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xdf>; + m_ds[0xe0] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xe0>; + m_ds[0xe1] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xe1>; + m_ds[0xe2] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xe2>; + m_ds[0xe3] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xe3>; + m_ds[0xe4] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xe4>; + m_ds[0xe5] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xe5>; + m_ds[0xe6] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xe6>; + m_ds[0xe7] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xe7>; + m_ds[0xe8] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xe8>; + m_ds[0xe9] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xe9>; + m_ds[0xea] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xea>; + m_ds[0xeb] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xeb>; + m_ds[0xec] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xec>; + m_ds[0xed] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xed>; + m_ds[0xee] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xee>; + m_ds[0xef] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xef>; + m_ds[0xf0] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xf0>; + m_ds[0xf1] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xf1>; + m_ds[0xf2] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xf2>; + m_ds[0xf3] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xf3>; + m_ds[0xf4] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xf4>; + m_ds[0xf5] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xf5>; + m_ds[0xf6] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xf6>; + m_ds[0xf7] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xf7>; + m_ds[0xf8] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xf8>; + m_ds[0xf9] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xf9>; + m_ds[0xfa] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xfa>; + m_ds[0xfb] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xfb>; + m_ds[0xfc] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xfc>; + m_ds[0xfd] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xfd>; + m_ds[0xfe] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xfe>; + m_ds[0xff] = (DrawScanlinePtr)&GPUDrawScanline::DrawScanlineEx<0xff>; #endif } @@ -716,7 +701,7 @@ __declspec(align(16)) static WORD s_dither[4][16] = {4, 3, 5, 2, 4, 3, 5, 2, 4, 3, 5, 2, 4, 3, 5, 2}, }; -void GPUDrawScanline::DrawScanlineT(int top, int left, int right, const GSVertexSW& v) +void GPUDrawScanline::DrawScanline(int top, int left, int right, const GSVertexSW& v) { GSVector4i s, t; GSVector4i r, g, b; @@ -829,7 +814,7 @@ void GPUDrawScanline::DrawScanlineT(int top, int left, int right, const GSVertex } template -void GPUDrawScanline::DrawScanlineExT(int top, int left, int right, const GSVertexSW& v) +void GPUDrawScanline::DrawScanlineEx(int top, int left, int right, const GSVertexSW& v) { DWORD iip = (sel >> 0) & 1; DWORD me = (sel >> 1) & 1; diff --git a/gsdx/GPUDrawScanline.h b/gsdx/GPUDrawScanline.h index 562df21..90ae8ce 100644 --- a/gsdx/GPUDrawScanline.h +++ b/gsdx/GPUDrawScanline.h @@ -89,10 +89,10 @@ class GPUDrawScanline : public GSAlignedClass<16>, public IDrawScanline void Init(); - void DrawScanlineT(int top, int left, int right, const GSVertexSW& v); + void DrawScanline(int top, int left, int right, const GSVertexSW& v); template - void DrawScanlineExT(int top, int left, int right, const GSVertexSW& v); + void DrawScanlineEx(int top, int left, int right, const GSVertexSW& v); __forceinline void SampleTexture(int pixels, DWORD ltf, DWORD tlu, DWORD twin, GSVector4i& test, const GSVector4i& s, const GSVector4i& t, GSVector4i* c); __forceinline void ColorTFX(DWORD tfx, const GSVector4i& r, const GSVector4i& g, const GSVector4i& b, GSVector4i* c); @@ -109,12 +109,8 @@ public: // IDrawScanline - bool BeginDraw(const GSRasterizerData* data); + void BeginDraw(const GSRasterizerData* data, DrawScanlinePtr* dsf, DrawSolidRectPtr* dsrf); void EndDraw(const GSRasterizerStats& stats) {} void SetupPrim(GS_PRIM_CLASS primclass, const GSVertexSW* vertices, const GSVertexSW& dscan); - void DrawScanline(int top, int left, int right, const GSVertexSW& v); - void DrawSolidRect(const GSVector4i& r, const GSVertexSW& v); - DrawScanlinePtr GetDrawScanlinePtr(); - void PrintStats() {} }; diff --git a/gsdx/GS.cpp b/gsdx/GS.cpp index 780b281..02aeb9e 100644 --- a/gsdx/GS.cpp +++ b/gsdx/GS.cpp @@ -544,123 +544,6 @@ EXPORT_C GSBenchmark(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow _aligned_free(ptr); } - if(0) - { - BYTE regs[0x2000]; - GSsetBaseMem(regs); - - HWND hWnd = NULL; - GSopen(&hWnd, _T(""), true, 6); - - s_gs->m_env.COLCLAMP.CLAMP = 1; - s_gs->m_env.PRIM.ABE = 0; - s_gs->m_env.PRIM.FST = 1; - s_gs->m_env.PRIM.TME = 1; - s_gs->m_env.PRIM.IIP = 0; - s_gs->m_env.TEXA.TA0 = 0; - s_gs->m_env.TEXA.TA1 = 0x80; - s_gs->m_env.TEXA.AEM = 0; - s_gs->m_context->ALPHA.A = 0; - s_gs->m_context->ALPHA.B = 1; - s_gs->m_context->ALPHA.C = 0; - s_gs->m_context->ALPHA.D = 1; - s_gs->m_context->CLAMP.WMS = 1; - s_gs->m_context->CLAMP.WMT = 1; - s_gs->m_context->CLAMP.MINU = 0; - s_gs->m_context->CLAMP.MINV = 0; - s_gs->m_context->CLAMP.MAXU = 511; - s_gs->m_context->CLAMP.MAXV = 511; - s_gs->m_context->FRAME.FBP = 0 >> 5; - s_gs->m_context->FRAME.FBW = 8; - s_gs->m_context->FRAME.PSM = PSM_PSMCT16S; - s_gs->m_context->SCISSOR.SCAX0 = 0; - s_gs->m_context->SCISSOR.SCAY0 = 0; - s_gs->m_context->SCISSOR.SCAX1 = 511; - s_gs->m_context->SCISSOR.SCAY1 = 511; - s_gs->m_context->TEST.ZTE = 0; - s_gs->m_context->TEST.ZTST = 2; - s_gs->m_context->TEX0.TBP0 = 0x2000; - s_gs->m_context->TEX0.TBW = 8; - s_gs->m_context->TEX0.PSM = PSM_PSMCT32; - s_gs->m_context->TEX0.TFX = 1; - s_gs->m_context->TEX0.TCC = 0; - s_gs->m_context->TEX0.TW = 9; - s_gs->m_context->TEX0.TH = 9; - s_gs->m_context->TEX1.MMAG = 0; - s_gs->m_context->TEX1.MMIN = 0; - s_gs->m_context->ZBUF.ZBP = 0x1000 >> 5; - s_gs->m_context->ZBUF.PSM = PSM_PSMZ24; - - GSRasterizer* ras = ((GSRendererSW*)s_gs)->GetRasterizer(); - - int count = 512 * 512; - - GSVertexSW* vertices = (GSVertexSW*)_aligned_malloc(count * sizeof(GSVertexSW), 16); -/* - // point - - for(int j = 0; j < 512; j++) - { - for(int i = 0; i < 512; i++) - { - GSVertexSW& v = vertices[(j << 7) + i]; - - v.p = GSVector4(i, j, 0, 0); - v.t = GSVector4((float)i + 0.5, (float)j + 0.5, 1.0f, 0.0f); - v.c = GSVector4(128.0f); - } - } - - s_gs->PRIM->PRIM = GS_POINTLIST; - - ras->Draw(vertices, count); - - vertices[0].p = GSVector4(0, 0, 0, 0); - vertices[0].t = GSVector4(0.5, 0.5, 1.0f, 0.0f); - vertices[0].c = GSVector4(128.0f); - vertices[1].p = GSVector4(512, 512, 0, 0); - vertices[1].t = GSVector4(512.5f, 512.5f, 1.0f, 0.0f); - vertices[1].c = GSVector4(128.0f); - - for(int i = 2; i < 512 * 512; i += 2) - { - memcpy(&vertices[i], &vertices[0], sizeof(vertices[0]) * 2); - } - - // sprite - - s_gs->PRIM->PRIM = GS_SPRITE; - - ras->Draw(vertices, count); - - // triangle - - vertices[0].p = GSVector4(0, 0, 0, 0); - vertices[0].t = GSVector4(0.5, 0.5, 1.0f, 0.0f); - vertices[0].c = GSVector4(128.0f); - vertices[1].p = GSVector4(512, 0, 0, 0); - vertices[1].t = GSVector4(512.5f, 0.5f, 1.0f, 0.0f); - vertices[1].c = GSVector4(128.0f); - vertices[2].p = GSVector4(512, 512, 0, 0); - vertices[2].t = GSVector4(512.5f, 512.5f, 1.0f, 0.0f); - vertices[2].c = GSVector4(128.0f); - - for(int i = 3; i < 512 * 512 - 2; i += 3) - { - memcpy(&vertices[i], &vertices[0], sizeof(vertices[0]) * 3); - } - - s_gs->PRIM->PRIM = GS_TRIANGLELIST; - - ras->Draw(vertices, 999); -*/ - // - - _aligned_free(vertices); - - GSclose(); - } - // if(0) diff --git a/gsdx/GSCrc.cpp b/gsdx/GSCrc.cpp index 6e3b068..6bfb457 100644 --- a/gsdx/GSCrc.cpp +++ b/gsdx/GSCrc.cpp @@ -61,6 +61,7 @@ CRC::Game CRC::m_games[] = {0xAA31B5BF, MetalGearSolid3, Unknown, false}, {0x9F185CE1, MetalGearSolid3, Unknown, false}, {0x98D4BC93, MetalGearSolid3, EU, false}, + {0x86BC3040, MetalGearSolid3, US, false}, //Subsistance disc 1 {0x278722BF, DBZBT2, US, false}, {0xFE961D28, DBZBT2, US, false}, {0x0393B6BE, DBZBT2, EU, false}, @@ -84,6 +85,7 @@ CRC::Game CRC::m_games[] = {0xC164550A, WildArms5, JPUNDUB, false}, {0xC1640D2C, WildArms5, US, false}, {0x0FCF8FE4, WildArms5, EU, false}, + {0x2294D322, WildArms5, JP, false}, {0x8B029334, Manhunt2, Unknown, false}, {0x09F49E37, CrashBandicootWoC, Unknown, false}, {0x013E349D, ResidentEvil4, US, false}, @@ -108,6 +110,7 @@ CRC::Game CRC::m_games[] = {0xF442260C, MajokkoALaMode2, JP, false}, {0x14FE77F7, TalesOfAbyss, US, false}, {0x045D77E9, TalesOfAbyss, US, false}, // undub + {0xAA5EC3A3, TalesOfAbyss, JP, false}, }; CAtlMap CRC::m_map; diff --git a/gsdx/GSDrawScanline.cpp b/gsdx/GSDrawScanline.cpp index 18c8396..25eb3a3 100644 --- a/gsdx/GSDrawScanline.cpp +++ b/gsdx/GSDrawScanline.cpp @@ -66,7 +66,7 @@ void GSDrawScanline::PrintStats() if(tpf >= 200) { - _ftprintf(fp, _T("m_dsmap.SetAt(0x%08x, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x%08x>); // %6.2f%%\n"), sel, sel, (float)tpf / 100); + _ftprintf(fp, _T("m_dsmap.SetAt(0x%08x, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x%08x>); // %6.2f%%\n"), sel, sel, (float)tpf / 100); } } } @@ -111,9 +111,10 @@ void GSDrawScanline::PrintStats() } } } + // IDrawScanline -bool GSDrawScanline::BeginDraw(const GSRasterizerData* data) +void GSDrawScanline::BeginDraw(const GSRasterizerData* data, DrawScanlinePtr* dsf, DrawSolidRectPtr* dsrf) { GSDrawingEnvironment& env = m_state->m_env; GSDrawingContext* context = m_state->m_context; @@ -243,25 +244,24 @@ bool GSDrawScanline::BeginDraw(const GSRasterizerData* data) m_dsf = p; } + *dsf = m_dsf->dsf; + + // + if(data->primclass == GS_SPRITE_CLASS) { - bool solid = true; + *dsrf = (DrawSolidRectPtr)&GSDrawScanline::DrawSolidRect; if(m_env.sel.iip || m_env.sel.tfx != TFX_NONE || m_env.sel.abe != 255 - || m_env.sel.fge || m_env.sel.ztst > 1 || m_env.sel.atst > 1 || m_env.sel.date) { - solid = false; + *dsrf = NULL; } - - return solid; } - - return false; } void GSDrawScanline::EndDraw(const GSRasterizerStats& stats) @@ -321,11 +321,6 @@ void GSDrawScanline::SetupPrim(GS_PRIM_CLASS primclass, const GSVertexSW* vertic } } -void GSDrawScanline::DrawScanline(int top, int left, int right, const GSVertexSW& v) -{ - (this->*m_dsf->dsf)(top, left, right, v); -} - void GSDrawScanline::DrawSolidRect(const GSVector4i& r, const GSVertexSW& v) { /* @@ -492,11 +487,6 @@ void GSDrawScanline::FillBlock(const GSVector4i* row, int* col, const GSVector4i } } -IDrawScanline::DrawScanlinePtr GSDrawScanline::GetDrawScanlinePtr() -{ - return m_dsf->dsf; -} - GSVector4i GSDrawScanline::Wrap(const GSVector4i& t) { GSVector4i clamp = t.sat_i16(m_env.t.min, m_env.t.max); @@ -1117,7 +1107,7 @@ void GSDrawScanline::Init() // w00t :P #define InitDS_IIP(iFPSM, iZPSM, iZTST, iIIP) \ - m_ds[iFPSM][iZPSM][iZTST][iIIP] = (DrawScanlinePtr)&GSDrawScanline::DrawScanlineT; \ + m_ds[iFPSM][iZPSM][iZTST][iIIP] = (DrawScanlinePtr)&GSDrawScanline::DrawScanline; \ #define InitDS_ZTST(iFPSM, iZPSM, iZTST) \ InitDS_IIP(iFPSM, iZPSM, iZTST, 0) \ @@ -1149,1424 +1139,1424 @@ void GSDrawScanline::Init() // bios - m_dsmap.SetAt(0x1fe04850, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04850>); // 6.71% - m_dsmap.SetAt(0x1fe28864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe28864>); // 4.49% - m_dsmap.SetAt(0x1fe28870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe28870>); // 21.34% - m_dsmap.SetAt(0x1fe38050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe38050>); // 17.74% - m_dsmap.SetAt(0x1fe38060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe38060>); // 6.70% - m_dsmap.SetAt(0x1fe38064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe38064>); // 20.15% - m_dsmap.SetAt(0x1fe39050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe39050>); // 103.71% - m_dsmap.SetAt(0x48428050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48428050>); // 7.52% - m_dsmap.SetAt(0x48428060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48428060>); // 5.18% - m_dsmap.SetAt(0x48804050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804050>); // 10.09% - m_dsmap.SetAt(0x48804860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804860>); // 20.42% - m_dsmap.SetAt(0x48839050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48839050>); // 2.44% - m_dsmap.SetAt(0x49004050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004050>); // 8.89% - m_dsmap.SetAt(0x49028060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49028060>); // 5.08% - m_dsmap.SetAt(0x4902884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4902884c>); // 2.41% - m_dsmap.SetAt(0x4902904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4902904c>); // 7.00% - m_dsmap.SetAt(0x49038050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49038050>); // 21.08% - m_dsmap.SetAt(0x49039050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49039050>); // 11.79% - m_dsmap.SetAt(0x4b02804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b02804c>); // 8.65% - m_dsmap.SetAt(0x4c40404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c40404c>); // 2.47% - m_dsmap.SetAt(0x4c419050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c419050>); // 28.12% - m_dsmap.SetAt(0x4c804050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c804050>); // 10.93% - m_dsmap.SetAt(0x4d019050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d019050>); // 93.98% - m_dsmap.SetAt(0x4d028864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d028864>); // 25.74% - m_dsmap.SetAt(0x4d038864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d038864>); // 138.18% - m_dsmap.SetAt(0x49029054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49029054>); // 3.71% - m_dsmap.SetAt(0x4b028054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b028054>); // 3.79% - m_dsmap.SetAt(0x4d00484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d00484c>); // 5.70% - m_dsmap.SetAt(0x4d02884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d02884c>); // 108.92% + m_dsmap.SetAt(0x1fe04850, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04850>); // 6.71% + m_dsmap.SetAt(0x1fe28864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe28864>); // 4.49% + m_dsmap.SetAt(0x1fe28870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe28870>); // 21.34% + m_dsmap.SetAt(0x1fe38050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe38050>); // 17.74% + m_dsmap.SetAt(0x1fe38060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe38060>); // 6.70% + m_dsmap.SetAt(0x1fe38064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe38064>); // 20.15% + m_dsmap.SetAt(0x1fe39050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe39050>); // 103.71% + m_dsmap.SetAt(0x48428050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48428050>); // 7.52% + m_dsmap.SetAt(0x48428060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48428060>); // 5.18% + m_dsmap.SetAt(0x48804050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804050>); // 10.09% + m_dsmap.SetAt(0x48804860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804860>); // 20.42% + m_dsmap.SetAt(0x48839050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48839050>); // 2.44% + m_dsmap.SetAt(0x49004050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004050>); // 8.89% + m_dsmap.SetAt(0x49028060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49028060>); // 5.08% + m_dsmap.SetAt(0x4902884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4902884c>); // 2.41% + m_dsmap.SetAt(0x4902904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4902904c>); // 7.00% + m_dsmap.SetAt(0x49038050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49038050>); // 21.08% + m_dsmap.SetAt(0x49039050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49039050>); // 11.79% + m_dsmap.SetAt(0x4b02804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b02804c>); // 8.65% + m_dsmap.SetAt(0x4c40404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c40404c>); // 2.47% + m_dsmap.SetAt(0x4c419050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c419050>); // 28.12% + m_dsmap.SetAt(0x4c804050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c804050>); // 10.93% + m_dsmap.SetAt(0x4d019050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d019050>); // 93.98% + m_dsmap.SetAt(0x4d028864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d028864>); // 25.74% + m_dsmap.SetAt(0x4d038864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d038864>); // 138.18% + m_dsmap.SetAt(0x49029054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49029054>); // 3.71% + m_dsmap.SetAt(0x4b028054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b028054>); // 3.79% + m_dsmap.SetAt(0x4d00484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d00484c>); // 5.70% + m_dsmap.SetAt(0x4d02884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d02884c>); // 108.92% // ffx - m_dsmap.SetAt(0x1fe04055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04055>); // 2.75% - m_dsmap.SetAt(0x1fe11056, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe11056>); // 12.17% - m_dsmap.SetAt(0x1fe3914d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3914d>); // 15.42% - m_dsmap.SetAt(0x1fe68075, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68075>); // 23.08% - m_dsmap.SetAt(0x1fe68155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68155>); // 15.72% - m_dsmap.SetAt(0x1fe68175, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68175>); // 3.59% - m_dsmap.SetAt(0x1fe68975, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68975>); // 7.44% - m_dsmap.SetAt(0x1fe69175, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe69175>); // 16.08% - m_dsmap.SetAt(0x1fe78075, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe78075>); // 21.09% - m_dsmap.SetAt(0x1fe78155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe78155>); // 15.25% - m_dsmap.SetAt(0x1fe84175, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe84175>); // 5.36% - m_dsmap.SetAt(0x1fee8975, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8975>); // 53.72% - m_dsmap.SetAt(0x48268965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48268965>); // 2.27% - m_dsmap.SetAt(0x48468965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48468965>); // 23.92% - m_dsmap.SetAt(0x48478165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48478165>); // 2.04% - m_dsmap.SetAt(0x48804055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804055>); // 13.51% - m_dsmap.SetAt(0x4880414d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4880414d>); // 9.97% - m_dsmap.SetAt(0x48804155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804155>); // 14.30% - m_dsmap.SetAt(0x488041cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488041cd>); // 2.69% - m_dsmap.SetAt(0x48804855, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804855>); // 14.28% - m_dsmap.SetAt(0x4880494d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4880494d>); // 6.36% - m_dsmap.SetAt(0x48804965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804965>); // 16.08% - m_dsmap.SetAt(0x48820165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48820165>); // 6.05% - m_dsmap.SetAt(0x48820965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48820965>); // 26.53% - m_dsmap.SetAt(0x48828965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48828965>); // 2.32% - m_dsmap.SetAt(0x4883014d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883014d>); // 18.75% - m_dsmap.SetAt(0x48830155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48830155>); // 12.23% - m_dsmap.SetAt(0x48830875, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48830875>); // 18.23% - m_dsmap.SetAt(0x48868165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868165>); // 10.32% - m_dsmap.SetAt(0x48868965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868965>); // 25.16% - m_dsmap.SetAt(0x4887814d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887814d>); // 8.68% - m_dsmap.SetAt(0x48878165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878165>); // 43.16% - m_dsmap.SetAt(0x488789cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488789cd>); // 5.04% - m_dsmap.SetAt(0x4887914d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887914d>); // 2.06% - m_dsmap.SetAt(0x488791cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488791cd>); // 4.09% - m_dsmap.SetAt(0x488791e5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488791e5>); // 49.19% - m_dsmap.SetAt(0x488e8965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8965>); // 5.78% - m_dsmap.SetAt(0x488f89f5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f89f5>); // 15.95% - m_dsmap.SetAt(0x49004165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004165>); // 13.61% - m_dsmap.SetAt(0x49004875, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004875>); // 4.22% - m_dsmap.SetAt(0x49068165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068165>); // 11.28% - m_dsmap.SetAt(0x49068965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068965>); // 42.74% - m_dsmap.SetAt(0x49069165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49069165>); // 48.78% - m_dsmap.SetAt(0x4907814d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907814d>); // 10.74% - m_dsmap.SetAt(0x49078165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078165>); // 10.86% - m_dsmap.SetAt(0x4c811055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c811055>); // 15.40% - m_dsmap.SetAt(0x4c831065, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c831065>); // 7.62% - m_dsmap.SetAt(0x4d068075, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068075>); // 13.70% - m_dsmap.SetAt(0x4d078075, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d078075>); // 10.34% - m_dsmap.SetAt(0x5100414d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5100414d>); // 9.62% - m_dsmap.SetAt(0x51004155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x51004155>); // 13.90% - m_dsmap.SetAt(0x51020965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x51020965>); // 19.50% - m_dsmap.SetAt(0x55204055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x55204055>); // 13.44% - m_dsmap.SetAt(0x1fee8175, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8175>); // 2.11% - m_dsmap.SetAt(0x48878965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878965>); // 51.94% - m_dsmap.SetAt(0x488e8165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8165>); // 4.45% - m_dsmap.SetAt(0x49004865, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004865>); // 3.36% - m_dsmap.SetAt(0x49004965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004965>); // 2.24% + m_dsmap.SetAt(0x1fe04055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04055>); // 2.75% + m_dsmap.SetAt(0x1fe11056, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe11056>); // 12.17% + m_dsmap.SetAt(0x1fe3914d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe3914d>); // 15.42% + m_dsmap.SetAt(0x1fe68075, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe68075>); // 23.08% + m_dsmap.SetAt(0x1fe68155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe68155>); // 15.72% + m_dsmap.SetAt(0x1fe68175, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe68175>); // 3.59% + m_dsmap.SetAt(0x1fe68975, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe68975>); // 7.44% + m_dsmap.SetAt(0x1fe69175, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe69175>); // 16.08% + m_dsmap.SetAt(0x1fe78075, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe78075>); // 21.09% + m_dsmap.SetAt(0x1fe78155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe78155>); // 15.25% + m_dsmap.SetAt(0x1fe84175, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe84175>); // 5.36% + m_dsmap.SetAt(0x1fee8975, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee8975>); // 53.72% + m_dsmap.SetAt(0x48268965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48268965>); // 2.27% + m_dsmap.SetAt(0x48468965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48468965>); // 23.92% + m_dsmap.SetAt(0x48478165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48478165>); // 2.04% + m_dsmap.SetAt(0x48804055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804055>); // 13.51% + m_dsmap.SetAt(0x4880414d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4880414d>); // 9.97% + m_dsmap.SetAt(0x48804155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804155>); // 14.30% + m_dsmap.SetAt(0x488041cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488041cd>); // 2.69% + m_dsmap.SetAt(0x48804855, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804855>); // 14.28% + m_dsmap.SetAt(0x4880494d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4880494d>); // 6.36% + m_dsmap.SetAt(0x48804965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804965>); // 16.08% + m_dsmap.SetAt(0x48820165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48820165>); // 6.05% + m_dsmap.SetAt(0x48820965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48820965>); // 26.53% + m_dsmap.SetAt(0x48828965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48828965>); // 2.32% + m_dsmap.SetAt(0x4883014d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4883014d>); // 18.75% + m_dsmap.SetAt(0x48830155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48830155>); // 12.23% + m_dsmap.SetAt(0x48830875, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48830875>); // 18.23% + m_dsmap.SetAt(0x48868165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868165>); // 10.32% + m_dsmap.SetAt(0x48868965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868965>); // 25.16% + m_dsmap.SetAt(0x4887814d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887814d>); // 8.68% + m_dsmap.SetAt(0x48878165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878165>); // 43.16% + m_dsmap.SetAt(0x488789cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488789cd>); // 5.04% + m_dsmap.SetAt(0x4887914d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887914d>); // 2.06% + m_dsmap.SetAt(0x488791cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488791cd>); // 4.09% + m_dsmap.SetAt(0x488791e5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488791e5>); // 49.19% + m_dsmap.SetAt(0x488e8965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8965>); // 5.78% + m_dsmap.SetAt(0x488f89f5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488f89f5>); // 15.95% + m_dsmap.SetAt(0x49004165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004165>); // 13.61% + m_dsmap.SetAt(0x49004875, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004875>); // 4.22% + m_dsmap.SetAt(0x49068165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068165>); // 11.28% + m_dsmap.SetAt(0x49068965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068965>); // 42.74% + m_dsmap.SetAt(0x49069165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49069165>); // 48.78% + m_dsmap.SetAt(0x4907814d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4907814d>); // 10.74% + m_dsmap.SetAt(0x49078165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078165>); // 10.86% + m_dsmap.SetAt(0x4c811055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c811055>); // 15.40% + m_dsmap.SetAt(0x4c831065, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c831065>); // 7.62% + m_dsmap.SetAt(0x4d068075, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d068075>); // 13.70% + m_dsmap.SetAt(0x4d078075, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d078075>); // 10.34% + m_dsmap.SetAt(0x5100414d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5100414d>); // 9.62% + m_dsmap.SetAt(0x51004155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x51004155>); // 13.90% + m_dsmap.SetAt(0x51020965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x51020965>); // 19.50% + m_dsmap.SetAt(0x55204055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x55204055>); // 13.44% + m_dsmap.SetAt(0x1fee8175, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee8175>); // 2.11% + m_dsmap.SetAt(0x48878965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878965>); // 51.94% + m_dsmap.SetAt(0x488e8165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8165>); // 4.45% + m_dsmap.SetAt(0x49004865, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004865>); // 3.36% + m_dsmap.SetAt(0x49004965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004965>); // 2.24% // ffx-2 - m_dsmap.SetAt(0x1fe30069, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe30069>); // 11.15% - m_dsmap.SetAt(0x48478965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48478965>); // 2.84% - m_dsmap.SetAt(0x4880404d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4880404d>); // 16.04% - m_dsmap.SetAt(0x48804165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804165>); // 25.67% - m_dsmap.SetAt(0x488049cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488049cd>); // 3.18% - m_dsmap.SetAt(0x4881004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881004d>); // 13.32% - m_dsmap.SetAt(0x4881814d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881814d>); // 30.64% - m_dsmap.SetAt(0x4881894d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881894d>); // 5.29% - m_dsmap.SetAt(0x488191cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488191cd>); // 11.56% - m_dsmap.SetAt(0x488391cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488391cd>); // 19.16% - m_dsmap.SetAt(0x4884804e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4884804e>); // 2.98% - m_dsmap.SetAt(0x4885004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885004d>); // 13.67% - m_dsmap.SetAt(0x4885894d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885894d>); // 7.18% - m_dsmap.SetAt(0x488781cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488781cd>); // 3.95% - m_dsmap.SetAt(0x488781f5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488781f5>); // 6.04% - m_dsmap.SetAt(0x48879165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879165>); // 2.94% - m_dsmap.SetAt(0x49004059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004059>); // 13.65% - m_dsmap.SetAt(0x49004155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004155>); // 13.71% - m_dsmap.SetAt(0x49004859, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004859>); // 15.97% - m_dsmap.SetAt(0x49004869, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004869>); // 6.07% - m_dsmap.SetAt(0x4900494d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4900494d>); // 4.01% - m_dsmap.SetAt(0x49059155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49059155>); // 12.92% - m_dsmap.SetAt(0x49078965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078965>); // 12.75% - m_dsmap.SetAt(0x490e8165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8165>); // 7.08% - m_dsmap.SetAt(0x4c45894d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c45894d>); // 6.93% - m_dsmap.SetAt(0x4c850055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c850055>); // 17.44% - m_dsmap.SetAt(0x4d0481e5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d0481e5>); // 2.13% - m_dsmap.SetAt(0x4d05894d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d05894d>); // 6.95% - m_dsmap.SetAt(0x5fe0404e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe0404e>); // 9.04% - m_dsmap.SetAt(0x5fe1004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe1004d>); // 16.33% - m_dsmap.SetAt(0x5fe5884d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe5884d>); // 11.57% + m_dsmap.SetAt(0x1fe30069, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe30069>); // 11.15% + m_dsmap.SetAt(0x48478965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48478965>); // 2.84% + m_dsmap.SetAt(0x4880404d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4880404d>); // 16.04% + m_dsmap.SetAt(0x48804165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804165>); // 25.67% + m_dsmap.SetAt(0x488049cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488049cd>); // 3.18% + m_dsmap.SetAt(0x4881004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4881004d>); // 13.32% + m_dsmap.SetAt(0x4881814d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4881814d>); // 30.64% + m_dsmap.SetAt(0x4881894d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4881894d>); // 5.29% + m_dsmap.SetAt(0x488191cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488191cd>); // 11.56% + m_dsmap.SetAt(0x488391cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488391cd>); // 19.16% + m_dsmap.SetAt(0x4884804e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4884804e>); // 2.98% + m_dsmap.SetAt(0x4885004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4885004d>); // 13.67% + m_dsmap.SetAt(0x4885894d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4885894d>); // 7.18% + m_dsmap.SetAt(0x488781cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488781cd>); // 3.95% + m_dsmap.SetAt(0x488781f5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488781f5>); // 6.04% + m_dsmap.SetAt(0x48879165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48879165>); // 2.94% + m_dsmap.SetAt(0x49004059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004059>); // 13.65% + m_dsmap.SetAt(0x49004155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004155>); // 13.71% + m_dsmap.SetAt(0x49004859, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004859>); // 15.97% + m_dsmap.SetAt(0x49004869, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004869>); // 6.07% + m_dsmap.SetAt(0x4900494d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4900494d>); // 4.01% + m_dsmap.SetAt(0x49059155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49059155>); // 12.92% + m_dsmap.SetAt(0x49078965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078965>); // 12.75% + m_dsmap.SetAt(0x490e8165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e8165>); // 7.08% + m_dsmap.SetAt(0x4c45894d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c45894d>); // 6.93% + m_dsmap.SetAt(0x4c850055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c850055>); // 17.44% + m_dsmap.SetAt(0x4d0481e5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d0481e5>); // 2.13% + m_dsmap.SetAt(0x4d05894d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d05894d>); // 6.95% + m_dsmap.SetAt(0x5fe0404e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe0404e>); // 9.04% + m_dsmap.SetAt(0x5fe1004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe1004d>); // 16.33% + m_dsmap.SetAt(0x5fe5884d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe5884d>); // 11.57% // ffxii - m_dsmap.SetAt(0x1fe04054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04054>); // 3.09% - m_dsmap.SetAt(0x1fe3804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3804c>); // 4.74% - m_dsmap.SetAt(0x1fe3904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3904c>); // 8.97% - m_dsmap.SetAt(0x1fe6804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe6804c>); // 3.93% - m_dsmap.SetAt(0x1fe68164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68164>); // 7.59% - m_dsmap.SetAt(0x1fe6884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe6884c>); // 19.02% - m_dsmap.SetAt(0x1fec8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fec8864>); // 3.35% - m_dsmap.SetAt(0x1fee8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8964>); // 81.44% - m_dsmap.SetAt(0x48404064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48404064>); // 7.14% - m_dsmap.SetAt(0x4847004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4847004c>); // 22.92% - m_dsmap.SetAt(0x4880404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4880404c>); // 4.82% - m_dsmap.SetAt(0x48804064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804064>); // 3.61% - m_dsmap.SetAt(0x48828064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48828064>); // 68.74% - m_dsmap.SetAt(0x48828864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48828864>); // 7.78% - m_dsmap.SetAt(0x4883004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883004c>); // 20.47% - m_dsmap.SetAt(0x4883084c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883084c>); // 13.18% - m_dsmap.SetAt(0x4883804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883804c>); // 21.09% - m_dsmap.SetAt(0x4883884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883884c>); // 28.30% - m_dsmap.SetAt(0x4883904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883904c>); // 71.52% - m_dsmap.SetAt(0x4886804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886804c>); // 4.74% - m_dsmap.SetAt(0x48868064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868064>); // 5.40% - m_dsmap.SetAt(0x4886884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886884c>); // 15.40% - m_dsmap.SetAt(0x4887084c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887084c>); // 309.13% - m_dsmap.SetAt(0x4887804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887804c>); // 6.68% - m_dsmap.SetAt(0x48878064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878064>); // 5.95% - m_dsmap.SetAt(0x4887884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887884c>); // 3.85% - m_dsmap.SetAt(0x4887904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887904c>); // 3.84% - m_dsmap.SetAt(0x48879064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879064>); // 26.55% - m_dsmap.SetAt(0x488e8b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8b64>); // 23.72% - m_dsmap.SetAt(0x48904064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48904064>); // 6.55% - m_dsmap.SetAt(0x48c0404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48c0404c>); // 9.43% - m_dsmap.SetAt(0x48c0484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48c0484c>); // 10.19% - m_dsmap.SetAt(0x48c7804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48c7804c>); // 22.30% - m_dsmap.SetAt(0x48c7884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48c7884c>); // 5.60% - m_dsmap.SetAt(0x4903804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4903804c>); // 13.92% - m_dsmap.SetAt(0x49068864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068864>); // 3.22% - m_dsmap.SetAt(0x49068b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068b64>); // 2.86% - m_dsmap.SetAt(0x4907804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907804c>); // 95.02% - m_dsmap.SetAt(0x49078064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078064>); // 3.87% - m_dsmap.SetAt(0x4907884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907884c>); // 12.32% - m_dsmap.SetAt(0x490e8b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8b64>); // 4.55% - m_dsmap.SetAt(0x49278064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49278064>); // 87.48% - m_dsmap.SetAt(0x5fe0404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe0404c>); // 24.18% - m_dsmap.SetAt(0x5fe04064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe04064>); // 33.59% + m_dsmap.SetAt(0x1fe04054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04054>); // 3.09% + m_dsmap.SetAt(0x1fe3804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe3804c>); // 4.74% + m_dsmap.SetAt(0x1fe3904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe3904c>); // 8.97% + m_dsmap.SetAt(0x1fe6804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe6804c>); // 3.93% + m_dsmap.SetAt(0x1fe68164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe68164>); // 7.59% + m_dsmap.SetAt(0x1fe6884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe6884c>); // 19.02% + m_dsmap.SetAt(0x1fec8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fec8864>); // 3.35% + m_dsmap.SetAt(0x1fee8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee8964>); // 81.44% + m_dsmap.SetAt(0x48404064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48404064>); // 7.14% + m_dsmap.SetAt(0x4847004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4847004c>); // 22.92% + m_dsmap.SetAt(0x4880404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4880404c>); // 4.82% + m_dsmap.SetAt(0x48804064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804064>); // 3.61% + m_dsmap.SetAt(0x48828064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48828064>); // 68.74% + m_dsmap.SetAt(0x48828864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48828864>); // 7.78% + m_dsmap.SetAt(0x4883004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4883004c>); // 20.47% + m_dsmap.SetAt(0x4883084c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4883084c>); // 13.18% + m_dsmap.SetAt(0x4883804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4883804c>); // 21.09% + m_dsmap.SetAt(0x4883884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4883884c>); // 28.30% + m_dsmap.SetAt(0x4883904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4883904c>); // 71.52% + m_dsmap.SetAt(0x4886804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4886804c>); // 4.74% + m_dsmap.SetAt(0x48868064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868064>); // 5.40% + m_dsmap.SetAt(0x4886884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4886884c>); // 15.40% + m_dsmap.SetAt(0x4887084c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887084c>); // 309.13% + m_dsmap.SetAt(0x4887804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887804c>); // 6.68% + m_dsmap.SetAt(0x48878064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878064>); // 5.95% + m_dsmap.SetAt(0x4887884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887884c>); // 3.85% + m_dsmap.SetAt(0x4887904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887904c>); // 3.84% + m_dsmap.SetAt(0x48879064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48879064>); // 26.55% + m_dsmap.SetAt(0x488e8b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8b64>); // 23.72% + m_dsmap.SetAt(0x48904064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48904064>); // 6.55% + m_dsmap.SetAt(0x48c0404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48c0404c>); // 9.43% + m_dsmap.SetAt(0x48c0484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48c0484c>); // 10.19% + m_dsmap.SetAt(0x48c7804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48c7804c>); // 22.30% + m_dsmap.SetAt(0x48c7884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48c7884c>); // 5.60% + m_dsmap.SetAt(0x4903804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4903804c>); // 13.92% + m_dsmap.SetAt(0x49068864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068864>); // 3.22% + m_dsmap.SetAt(0x49068b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068b64>); // 2.86% + m_dsmap.SetAt(0x4907804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4907804c>); // 95.02% + m_dsmap.SetAt(0x49078064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078064>); // 3.87% + m_dsmap.SetAt(0x4907884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4907884c>); // 12.32% + m_dsmap.SetAt(0x490e8b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e8b64>); // 4.55% + m_dsmap.SetAt(0x49278064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49278064>); // 87.48% + m_dsmap.SetAt(0x5fe0404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe0404c>); // 24.18% + m_dsmap.SetAt(0x5fe04064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe04064>); // 33.59% // kingdom hearts - m_dsmap.SetAt(0x1fe0404d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe0404d>); // 3.00% - m_dsmap.SetAt(0x1fe1804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe1804c>); // 7.68% - m_dsmap.SetAt(0x1fe3004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3004d>); // 21.82% - m_dsmap.SetAt(0x1fe3804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3804d>); // 18.18% - m_dsmap.SetAt(0x1fe3904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3904d>); // 16.26% - m_dsmap.SetAt(0x1fee9164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee9164>); // 5.95% - m_dsmap.SetAt(0x4840414c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4840414c>); // 16.75% - m_dsmap.SetAt(0x4846814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4846814c>); // 2.10% - m_dsmap.SetAt(0x48468174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48468174>); // 14.86% - m_dsmap.SetAt(0x48468974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48468974>); // 18.45% - m_dsmap.SetAt(0x4847814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4847814c>); // 159.55% - m_dsmap.SetAt(0x48478174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48478174>); // 32.95% - m_dsmap.SetAt(0x48804054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804054>); // 11.46% - m_dsmap.SetAt(0x4880414c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4880414c>); // 9.35% - m_dsmap.SetAt(0x4880494c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4880494c>); // 4.47% - m_dsmap.SetAt(0x48804974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804974>); // 3.16% - m_dsmap.SetAt(0x4881004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881004c>); // 11.74% - m_dsmap.SetAt(0x48818054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48818054>); // 14.49% - m_dsmap.SetAt(0x48819054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48819054>); // 15.36% - m_dsmap.SetAt(0x48829164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48829164>); // 5.19% - m_dsmap.SetAt(0x48830054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48830054>); // 22.16% - m_dsmap.SetAt(0x48830164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48830164>); // 126.37% - m_dsmap.SetAt(0x48858054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48858054>); // 11.97% - m_dsmap.SetAt(0x48858854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48858854>); // 3.75% - m_dsmap.SetAt(0x48859054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48859054>); // 2.28% - m_dsmap.SetAt(0x4886814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886814c>); // 6.35% - m_dsmap.SetAt(0x48868154, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868154>); // 6.93% - m_dsmap.SetAt(0x48868174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868174>); // 4.04% - m_dsmap.SetAt(0x48868974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868974>); // 9.24% - m_dsmap.SetAt(0x48878054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878054>); // 2.66% - m_dsmap.SetAt(0x4887814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887814c>); // 2.16% - m_dsmap.SetAt(0x48878174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878174>); // 7.10% - m_dsmap.SetAt(0x4887894c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887894c>); // 3.03% - m_dsmap.SetAt(0x48879054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879054>); // 2.20% - m_dsmap.SetAt(0x488e8164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8164>); // 16.75% - m_dsmap.SetAt(0x488e8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8964>); // 19.81% - m_dsmap.SetAt(0x488e9164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e9164>); // 15.93% - m_dsmap.SetAt(0x488e9168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e9168>); // 2.82% - m_dsmap.SetAt(0x48c68174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48c68174>); // 4.21% - m_dsmap.SetAt(0x49004054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004054>); // 13.40% - m_dsmap.SetAt(0x4900414c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4900414c>); // 8.19% - m_dsmap.SetAt(0x49068174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068174>); // 4.84% - m_dsmap.SetAt(0x49068974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068974>); // 6.05% - m_dsmap.SetAt(0x4907814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907814c>); // 4.97% - m_dsmap.SetAt(0x49078174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078174>); // 8.87% - m_dsmap.SetAt(0x4907894c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907894c>); // 4.50% - m_dsmap.SetAt(0x49078974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078974>); // 4.44% - m_dsmap.SetAt(0x49079174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49079174>); // 2.45% - m_dsmap.SetAt(0x490e814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e814c>); // 21.77% - m_dsmap.SetAt(0x490e894c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e894c>); // 44.60% - m_dsmap.SetAt(0x490e8974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8974>); // 54.05% - m_dsmap.SetAt(0x5fe04168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe04168>); // 2.33% - m_dsmap.SetAt(0x5fe3804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe3804c>); // 3.05% - m_dsmap.SetAt(0x5fe3904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe3904c>); // 5.07% + m_dsmap.SetAt(0x1fe0404d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe0404d>); // 3.00% + m_dsmap.SetAt(0x1fe1804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe1804c>); // 7.68% + m_dsmap.SetAt(0x1fe3004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe3004d>); // 21.82% + m_dsmap.SetAt(0x1fe3804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe3804d>); // 18.18% + m_dsmap.SetAt(0x1fe3904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe3904d>); // 16.26% + m_dsmap.SetAt(0x1fee9164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee9164>); // 5.95% + m_dsmap.SetAt(0x4840414c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4840414c>); // 16.75% + m_dsmap.SetAt(0x4846814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4846814c>); // 2.10% + m_dsmap.SetAt(0x48468174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48468174>); // 14.86% + m_dsmap.SetAt(0x48468974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48468974>); // 18.45% + m_dsmap.SetAt(0x4847814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4847814c>); // 159.55% + m_dsmap.SetAt(0x48478174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48478174>); // 32.95% + m_dsmap.SetAt(0x48804054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804054>); // 11.46% + m_dsmap.SetAt(0x4880414c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4880414c>); // 9.35% + m_dsmap.SetAt(0x4880494c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4880494c>); // 4.47% + m_dsmap.SetAt(0x48804974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804974>); // 3.16% + m_dsmap.SetAt(0x4881004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4881004c>); // 11.74% + m_dsmap.SetAt(0x48818054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48818054>); // 14.49% + m_dsmap.SetAt(0x48819054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48819054>); // 15.36% + m_dsmap.SetAt(0x48829164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48829164>); // 5.19% + m_dsmap.SetAt(0x48830054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48830054>); // 22.16% + m_dsmap.SetAt(0x48830164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48830164>); // 126.37% + m_dsmap.SetAt(0x48858054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48858054>); // 11.97% + m_dsmap.SetAt(0x48858854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48858854>); // 3.75% + m_dsmap.SetAt(0x48859054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48859054>); // 2.28% + m_dsmap.SetAt(0x4886814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4886814c>); // 6.35% + m_dsmap.SetAt(0x48868154, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868154>); // 6.93% + m_dsmap.SetAt(0x48868174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868174>); // 4.04% + m_dsmap.SetAt(0x48868974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868974>); // 9.24% + m_dsmap.SetAt(0x48878054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878054>); // 2.66% + m_dsmap.SetAt(0x4887814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887814c>); // 2.16% + m_dsmap.SetAt(0x48878174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878174>); // 7.10% + m_dsmap.SetAt(0x4887894c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887894c>); // 3.03% + m_dsmap.SetAt(0x48879054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48879054>); // 2.20% + m_dsmap.SetAt(0x488e8164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8164>); // 16.75% + m_dsmap.SetAt(0x488e8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8964>); // 19.81% + m_dsmap.SetAt(0x488e9164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e9164>); // 15.93% + m_dsmap.SetAt(0x488e9168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e9168>); // 2.82% + m_dsmap.SetAt(0x48c68174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48c68174>); // 4.21% + m_dsmap.SetAt(0x49004054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004054>); // 13.40% + m_dsmap.SetAt(0x4900414c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4900414c>); // 8.19% + m_dsmap.SetAt(0x49068174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068174>); // 4.84% + m_dsmap.SetAt(0x49068974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068974>); // 6.05% + m_dsmap.SetAt(0x4907814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4907814c>); // 4.97% + m_dsmap.SetAt(0x49078174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078174>); // 8.87% + m_dsmap.SetAt(0x4907894c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4907894c>); // 4.50% + m_dsmap.SetAt(0x49078974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078974>); // 4.44% + m_dsmap.SetAt(0x49079174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49079174>); // 2.45% + m_dsmap.SetAt(0x490e814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e814c>); // 21.77% + m_dsmap.SetAt(0x490e894c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e894c>); // 44.60% + m_dsmap.SetAt(0x490e8974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e8974>); // 54.05% + m_dsmap.SetAt(0x5fe04168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe04168>); // 2.33% + m_dsmap.SetAt(0x5fe3804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe3804c>); // 3.05% + m_dsmap.SetAt(0x5fe3904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe3904c>); // 5.07% // kingdom hearts 2 - m_dsmap.SetAt(0x1fe31054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe31054>); // 15.33% - m_dsmap.SetAt(0x48478854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48478854>); // 2.54% - m_dsmap.SetAt(0x48804160, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804160>); // 3.87% - m_dsmap.SetAt(0x48810054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48810054>); // 23.41% - m_dsmap.SetAt(0x4883814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883814c>); // 5.49% - m_dsmap.SetAt(0x48878854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878854>); // 32.99% - m_dsmap.SetAt(0x488a8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488a8964>); // 14.08% - m_dsmap.SetAt(0x49004974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004974>); // 3.26% - m_dsmap.SetAt(0x49078854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078854>); // 3.90% - m_dsmap.SetAt(0x4c83004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c83004d>); // 56.70% - m_dsmap.SetAt(0x4d03004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d03004d>); // 19.56% + m_dsmap.SetAt(0x1fe31054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe31054>); // 15.33% + m_dsmap.SetAt(0x48478854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48478854>); // 2.54% + m_dsmap.SetAt(0x48804160, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804160>); // 3.87% + m_dsmap.SetAt(0x48810054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48810054>); // 23.41% + m_dsmap.SetAt(0x4883814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4883814c>); // 5.49% + m_dsmap.SetAt(0x48878854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878854>); // 32.99% + m_dsmap.SetAt(0x488a8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488a8964>); // 14.08% + m_dsmap.SetAt(0x49004974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004974>); // 3.26% + m_dsmap.SetAt(0x49078854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078854>); // 3.90% + m_dsmap.SetAt(0x4c83004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c83004d>); // 56.70% + m_dsmap.SetAt(0x4d03004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d03004d>); // 19.56% // persona 3 - m_dsmap.SetAt(0x484e8068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x484e8068>); // 25.28% - m_dsmap.SetAt(0x48804868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804868>); // 13.41% - m_dsmap.SetAt(0x4881884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881884c>); // 18.40% - m_dsmap.SetAt(0x48868068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868068>); // 3.75% - m_dsmap.SetAt(0x488e8068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8068>); // 5.40% - m_dsmap.SetAt(0x4907904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907904c>); // 15.09% - m_dsmap.SetAt(0x490e8068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8068>); // 5.20% - m_dsmap.SetAt(0x4a43004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a43004c>); // 18.93% - m_dsmap.SetAt(0x4b07934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b07934c>); // 32.19% - m_dsmap.SetAt(0x4d47834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d47834c>); // 100.32% - m_dsmap.SetAt(0x4d478b4c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d478b4c>); // 19.56% - m_dsmap.SetAt(0x4d47934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d47934c>); // 26.08% + m_dsmap.SetAt(0x484e8068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x484e8068>); // 25.28% + m_dsmap.SetAt(0x48804868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804868>); // 13.41% + m_dsmap.SetAt(0x4881884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4881884c>); // 18.40% + m_dsmap.SetAt(0x48868068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868068>); // 3.75% + m_dsmap.SetAt(0x488e8068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8068>); // 5.40% + m_dsmap.SetAt(0x4907904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4907904c>); // 15.09% + m_dsmap.SetAt(0x490e8068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e8068>); // 5.20% + m_dsmap.SetAt(0x4a43004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4a43004c>); // 18.93% + m_dsmap.SetAt(0x4b07934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b07934c>); // 32.19% + m_dsmap.SetAt(0x4d47834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d47834c>); // 100.32% + m_dsmap.SetAt(0x4d478b4c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d478b4c>); // 19.56% + m_dsmap.SetAt(0x4d47934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d47934c>); // 26.08% // persona 4 - m_dsmap.SetAt(0x1fe04058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04058>); // 2.56% - m_dsmap.SetAt(0x1fe04858, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04858>); // 6.40% - m_dsmap.SetAt(0x4840484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4840484c>); // 13.36% - m_dsmap.SetAt(0x48804058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804058>); // 85.25% - m_dsmap.SetAt(0x48804068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804068>); // 8.39% - m_dsmap.SetAt(0x48804368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804368>); // 16.16% - m_dsmap.SetAt(0x48804b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804b68>); // 7.87% - m_dsmap.SetAt(0x4881834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881834c>); // 19.07% - m_dsmap.SetAt(0x4881934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881934c>); // 18.32% - m_dsmap.SetAt(0x48828368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48828368>); // 10.46% - m_dsmap.SetAt(0x48828b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48828b68>); // 7.37% - m_dsmap.SetAt(0x48868868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868868>); // 320.60% - m_dsmap.SetAt(0x48868b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868b68>); // 48.70% - m_dsmap.SetAt(0x48868f68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868f68>); // 115.10% - m_dsmap.SetAt(0x48869368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48869368>); // 17.55% - m_dsmap.SetAt(0x48878b4c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878b4c>); // 3.82% - m_dsmap.SetAt(0x48879168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879168>); // 18.94% - m_dsmap.SetAt(0x48879368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879368>); // 5.59% - m_dsmap.SetAt(0x488e8368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8368>); // 6.75% - m_dsmap.SetAt(0x488e8868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8868>); // 12.82% - m_dsmap.SetAt(0x488e8b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8b68>); // 104.26% - m_dsmap.SetAt(0x4900404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4900404c>); // 12.48% - m_dsmap.SetAt(0x4900484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4900484c>); // 13.48% - m_dsmap.SetAt(0x4903004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4903004c>); // 23.84% - m_dsmap.SetAt(0x49068068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068068>); // 9.24% - m_dsmap.SetAt(0x49068868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068868>); // 14.91% - m_dsmap.SetAt(0x49078068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078068>); // 42.69% - m_dsmap.SetAt(0x49079068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49079068>); // 58.18% - m_dsmap.SetAt(0x490e8868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8868>); // 18.50% - m_dsmap.SetAt(0x4a47804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a47804c>); // 42.91% - m_dsmap.SetAt(0x4a47904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a47904c>); // 24.18% - m_dsmap.SetAt(0x4a80404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a80404c>); // 46.97% - m_dsmap.SetAt(0x4a83004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a83004c>); // 105.26% - m_dsmap.SetAt(0x4a879068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a879068>); // 10.58% - m_dsmap.SetAt(0x4b00404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b00404c>); // 15.94% - m_dsmap.SetAt(0x4b004968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b004968>); // 11.52% - m_dsmap.SetAt(0x4b07804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b07804c>); // 23.02% - m_dsmap.SetAt(0x4b07884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b07884c>); // 24.58% - m_dsmap.SetAt(0x4d0e8868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d0e8868>); // 6.12% - m_dsmap.SetAt(0x5fe04058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe04058>); // 2.07% - m_dsmap.SetAt(0x5fe04858, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe04858>); // 23.73% + m_dsmap.SetAt(0x1fe04058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04058>); // 2.56% + m_dsmap.SetAt(0x1fe04858, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04858>); // 6.40% + m_dsmap.SetAt(0x4840484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4840484c>); // 13.36% + m_dsmap.SetAt(0x48804058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804058>); // 85.25% + m_dsmap.SetAt(0x48804068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804068>); // 8.39% + m_dsmap.SetAt(0x48804368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804368>); // 16.16% + m_dsmap.SetAt(0x48804b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804b68>); // 7.87% + m_dsmap.SetAt(0x4881834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4881834c>); // 19.07% + m_dsmap.SetAt(0x4881934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4881934c>); // 18.32% + m_dsmap.SetAt(0x48828368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48828368>); // 10.46% + m_dsmap.SetAt(0x48828b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48828b68>); // 7.37% + m_dsmap.SetAt(0x48868868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868868>); // 320.60% + m_dsmap.SetAt(0x48868b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868b68>); // 48.70% + m_dsmap.SetAt(0x48868f68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868f68>); // 115.10% + m_dsmap.SetAt(0x48869368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48869368>); // 17.55% + m_dsmap.SetAt(0x48878b4c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878b4c>); // 3.82% + m_dsmap.SetAt(0x48879168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48879168>); // 18.94% + m_dsmap.SetAt(0x48879368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48879368>); // 5.59% + m_dsmap.SetAt(0x488e8368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8368>); // 6.75% + m_dsmap.SetAt(0x488e8868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8868>); // 12.82% + m_dsmap.SetAt(0x488e8b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8b68>); // 104.26% + m_dsmap.SetAt(0x4900404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4900404c>); // 12.48% + m_dsmap.SetAt(0x4900484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4900484c>); // 13.48% + m_dsmap.SetAt(0x4903004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4903004c>); // 23.84% + m_dsmap.SetAt(0x49068068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068068>); // 9.24% + m_dsmap.SetAt(0x49068868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068868>); // 14.91% + m_dsmap.SetAt(0x49078068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078068>); // 42.69% + m_dsmap.SetAt(0x49079068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49079068>); // 58.18% + m_dsmap.SetAt(0x490e8868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e8868>); // 18.50% + m_dsmap.SetAt(0x4a47804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4a47804c>); // 42.91% + m_dsmap.SetAt(0x4a47904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4a47904c>); // 24.18% + m_dsmap.SetAt(0x4a80404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4a80404c>); // 46.97% + m_dsmap.SetAt(0x4a83004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4a83004c>); // 105.26% + m_dsmap.SetAt(0x4a879068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4a879068>); // 10.58% + m_dsmap.SetAt(0x4b00404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b00404c>); // 15.94% + m_dsmap.SetAt(0x4b004968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b004968>); // 11.52% + m_dsmap.SetAt(0x4b07804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b07804c>); // 23.02% + m_dsmap.SetAt(0x4b07884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b07884c>); // 24.58% + m_dsmap.SetAt(0x4d0e8868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d0e8868>); // 6.12% + m_dsmap.SetAt(0x5fe04058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe04058>); // 2.07% + m_dsmap.SetAt(0x5fe04858, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe04858>); // 23.73% // sfex3 - m_dsmap.SetAt(0x1fe1004e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe1004e>); // 6.67% - m_dsmap.SetAt(0x1fe3004e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3004e>); // 12.64% - m_dsmap.SetAt(0x1fe6b168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe6b168>); // 15.50% - m_dsmap.SetAt(0x1fe6b968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe6b968>); // 5.44% - m_dsmap.SetAt(0x41268068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x41268068>); // 7.42% - m_dsmap.SetAt(0x4856b1cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4856b1cc>); // 3.14% - m_dsmap.SetAt(0x48804158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804158>); // 8.13% - m_dsmap.SetAt(0x4881004e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881004e>); // 9.85% - m_dsmap.SetAt(0x4885904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885904c>); // 3.54% - m_dsmap.SetAt(0x4885914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885914c>); // 2.89% - m_dsmap.SetAt(0x48859158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48859158>); // 8.72% - m_dsmap.SetAt(0x4886b168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886b168>); // 14.80% - m_dsmap.SetAt(0x4886b968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886b968>); // 41.18% - m_dsmap.SetAt(0x48878158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878158>); // 2.45% - m_dsmap.SetAt(0x4887914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887914c>); // 14.76% - m_dsmap.SetAt(0x48879158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879158>); // 2.67% - m_dsmap.SetAt(0x49078178, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078178>); // 3.52% - m_dsmap.SetAt(0x49079178, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49079178>); // 5.43% - m_dsmap.SetAt(0x4c804158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c804158>); // 8.27% - m_dsmap.SetAt(0x4c868868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c868868>); // 4.63% - m_dsmap.SetAt(0x4d06b168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d06b168>); // 2.18% - m_dsmap.SetAt(0x4d404058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d404058>); // 3.92% + m_dsmap.SetAt(0x1fe1004e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe1004e>); // 6.67% + m_dsmap.SetAt(0x1fe3004e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe3004e>); // 12.64% + m_dsmap.SetAt(0x1fe6b168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe6b168>); // 15.50% + m_dsmap.SetAt(0x1fe6b968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe6b968>); // 5.44% + m_dsmap.SetAt(0x41268068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x41268068>); // 7.42% + m_dsmap.SetAt(0x4856b1cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4856b1cc>); // 3.14% + m_dsmap.SetAt(0x48804158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804158>); // 8.13% + m_dsmap.SetAt(0x4881004e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4881004e>); // 9.85% + m_dsmap.SetAt(0x4885904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4885904c>); // 3.54% + m_dsmap.SetAt(0x4885914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4885914c>); // 2.89% + m_dsmap.SetAt(0x48859158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48859158>); // 8.72% + m_dsmap.SetAt(0x4886b168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4886b168>); // 14.80% + m_dsmap.SetAt(0x4886b968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4886b968>); // 41.18% + m_dsmap.SetAt(0x48878158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878158>); // 2.45% + m_dsmap.SetAt(0x4887914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887914c>); // 14.76% + m_dsmap.SetAt(0x48879158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48879158>); // 2.67% + m_dsmap.SetAt(0x49078178, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078178>); // 3.52% + m_dsmap.SetAt(0x49079178, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49079178>); // 5.43% + m_dsmap.SetAt(0x4c804158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c804158>); // 8.27% + m_dsmap.SetAt(0x4c868868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c868868>); // 4.63% + m_dsmap.SetAt(0x4d06b168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d06b168>); // 2.18% + m_dsmap.SetAt(0x4d404058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d404058>); // 3.92% // gt4 - m_dsmap.SetAt(0x1fe04057, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04057>); // 5.12% - m_dsmap.SetAt(0x1fe1904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe1904c>); // 16.45% - m_dsmap.SetAt(0x1fe1904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe1904d>); // 8.23% - m_dsmap.SetAt(0x1fe7804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe7804d>); // 11.63% - m_dsmap.SetAt(0x1fe7904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe7904c>); // 2.63% - m_dsmap.SetAt(0x1fe7904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe7904d>); // 11.11% - m_dsmap.SetAt(0x1fe84964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe84964>); // 10.37% - m_dsmap.SetAt(0x1fee8164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8164>); // 6.19% - m_dsmap.SetAt(0x1fee8965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8965>); // 4.34% - m_dsmap.SetAt(0x4880484d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4880484d>); // 5.27% - m_dsmap.SetAt(0x488181d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488181d4>); // 18.53% - m_dsmap.SetAt(0x4881904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881904d>); // 11.24% - m_dsmap.SetAt(0x488191d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488191d4>); // 21.08% - m_dsmap.SetAt(0x4883904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883904d>); // 7.99% - m_dsmap.SetAt(0x4887804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887804d>); // 7.82% - m_dsmap.SetAt(0x4887904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887904d>); // 7.13% - m_dsmap.SetAt(0x48884064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884064>); // 10.93% - m_dsmap.SetAt(0x48884f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884f64>); // 139.38% - m_dsmap.SetAt(0x488e804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e804c>); // 4.67% - m_dsmap.SetAt(0x488e8065, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8065>); // 31.32% - m_dsmap.SetAt(0x488e8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8864>); // 19.46% - m_dsmap.SetAt(0x488e8865, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8865>); // 39.81% - m_dsmap.SetAt(0x488e8f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8f64>); // 7.42% - m_dsmap.SetAt(0x488e9764, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e9764>); // 31.10% - m_dsmap.SetAt(0x488e9765, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e9765>); // 2.28% - m_dsmap.SetAt(0x4b03804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b03804c>); // 26.88% - m_dsmap.SetAt(0x4b1a8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b1a8864>); // 7.62% - m_dsmap.SetAt(0x4c80404d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c80404d>); // 2.26% - m_dsmap.SetAt(0x4c81804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c81804c>); // 10.92% - m_dsmap.SetAt(0x4c81904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c81904c>); // 24.91% - m_dsmap.SetAt(0x4c81904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c81904d>); // 10.52% - m_dsmap.SetAt(0x4c83804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c83804d>); // 14.22% - m_dsmap.SetAt(0x4c83904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c83904c>); // 43.74% - m_dsmap.SetAt(0x4c83904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c83904d>); // 13.01% - m_dsmap.SetAt(0x4d05804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d05804c>); // 23.62% - m_dsmap.SetAt(0x5520404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5520404c>); // 12.94% - m_dsmap.SetAt(0x5520410c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5520410c>); // 14.56% - m_dsmap.SetAt(0x5fe04054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe04054>); // 2.54% - m_dsmap.SetAt(0x5fe1904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe1904c>); // 7.84% - m_dsmap.SetAt(0x5fe2884e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe2884e>); // 4.46% - m_dsmap.SetAt(0x5fe3904e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe3904e>); // 4.42% - m_dsmap.SetAt(0x5fe5804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe5804c>); // 12.23% - m_dsmap.SetAt(0x5fe5904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe5904d>); // 9.86% - m_dsmap.SetAt(0x5fee8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fee8864>); // 9.83% + m_dsmap.SetAt(0x1fe04057, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04057>); // 5.12% + m_dsmap.SetAt(0x1fe1904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe1904c>); // 16.45% + m_dsmap.SetAt(0x1fe1904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe1904d>); // 8.23% + m_dsmap.SetAt(0x1fe7804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe7804d>); // 11.63% + m_dsmap.SetAt(0x1fe7904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe7904c>); // 2.63% + m_dsmap.SetAt(0x1fe7904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe7904d>); // 11.11% + m_dsmap.SetAt(0x1fe84964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe84964>); // 10.37% + m_dsmap.SetAt(0x1fee8164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee8164>); // 6.19% + m_dsmap.SetAt(0x1fee8965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee8965>); // 4.34% + m_dsmap.SetAt(0x4880484d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4880484d>); // 5.27% + m_dsmap.SetAt(0x488181d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488181d4>); // 18.53% + m_dsmap.SetAt(0x4881904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4881904d>); // 11.24% + m_dsmap.SetAt(0x488191d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488191d4>); // 21.08% + m_dsmap.SetAt(0x4883904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4883904d>); // 7.99% + m_dsmap.SetAt(0x4887804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887804d>); // 7.82% + m_dsmap.SetAt(0x4887904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887904d>); // 7.13% + m_dsmap.SetAt(0x48884064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48884064>); // 10.93% + m_dsmap.SetAt(0x48884f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48884f64>); // 139.38% + m_dsmap.SetAt(0x488e804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e804c>); // 4.67% + m_dsmap.SetAt(0x488e8065, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8065>); // 31.32% + m_dsmap.SetAt(0x488e8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8864>); // 19.46% + m_dsmap.SetAt(0x488e8865, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8865>); // 39.81% + m_dsmap.SetAt(0x488e8f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8f64>); // 7.42% + m_dsmap.SetAt(0x488e9764, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e9764>); // 31.10% + m_dsmap.SetAt(0x488e9765, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e9765>); // 2.28% + m_dsmap.SetAt(0x4b03804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b03804c>); // 26.88% + m_dsmap.SetAt(0x4b1a8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b1a8864>); // 7.62% + m_dsmap.SetAt(0x4c80404d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c80404d>); // 2.26% + m_dsmap.SetAt(0x4c81804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c81804c>); // 10.92% + m_dsmap.SetAt(0x4c81904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c81904c>); // 24.91% + m_dsmap.SetAt(0x4c81904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c81904d>); // 10.52% + m_dsmap.SetAt(0x4c83804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c83804d>); // 14.22% + m_dsmap.SetAt(0x4c83904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c83904c>); // 43.74% + m_dsmap.SetAt(0x4c83904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c83904d>); // 13.01% + m_dsmap.SetAt(0x4d05804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d05804c>); // 23.62% + m_dsmap.SetAt(0x5520404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5520404c>); // 12.94% + m_dsmap.SetAt(0x5520410c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5520410c>); // 14.56% + m_dsmap.SetAt(0x5fe04054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe04054>); // 2.54% + m_dsmap.SetAt(0x5fe1904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe1904c>); // 7.84% + m_dsmap.SetAt(0x5fe2884e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe2884e>); // 4.46% + m_dsmap.SetAt(0x5fe3904e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe3904e>); // 4.42% + m_dsmap.SetAt(0x5fe5804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe5804c>); // 12.23% + m_dsmap.SetAt(0x5fe5904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe5904d>); // 9.86% + m_dsmap.SetAt(0x5fee8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fee8864>); // 9.83% // katamary damacy - m_dsmap.SetAt(0x488041d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488041d4>); // 13.32% - m_dsmap.SetAt(0x488041e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488041e4>); // 15.42% - m_dsmap.SetAt(0x488181cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488181cc>); // 6.97% - m_dsmap.SetAt(0x488301cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488301cd>); // 10.03% - m_dsmap.SetAt(0x488301e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488301e4>); // 9.52% - m_dsmap.SetAt(0x488581e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488581e4>); // 9.61% - m_dsmap.SetAt(0x488591e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488591e4>); // 4.94% - m_dsmap.SetAt(0x488691e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488691e4>); // 2.74% - m_dsmap.SetAt(0x488e81e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e81e4>); // 2.96% - m_dsmap.SetAt(0x488e89e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e89e4>); // 102.81% - m_dsmap.SetAt(0x488e9064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e9064>); // 3.01% - m_dsmap.SetAt(0x488e91d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e91d4>); // 17.06% - m_dsmap.SetAt(0x488e91e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e91e4>); // 29.50% - m_dsmap.SetAt(0x48904054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48904054>); // 16.23% - m_dsmap.SetAt(0x490681e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490681e4>); // 2.12% + m_dsmap.SetAt(0x488041d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488041d4>); // 13.32% + m_dsmap.SetAt(0x488041e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488041e4>); // 15.42% + m_dsmap.SetAt(0x488181cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488181cc>); // 6.97% + m_dsmap.SetAt(0x488301cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488301cd>); // 10.03% + m_dsmap.SetAt(0x488301e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488301e4>); // 9.52% + m_dsmap.SetAt(0x488581e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488581e4>); // 9.61% + m_dsmap.SetAt(0x488591e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488591e4>); // 4.94% + m_dsmap.SetAt(0x488691e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488691e4>); // 2.74% + m_dsmap.SetAt(0x488e81e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e81e4>); // 2.96% + m_dsmap.SetAt(0x488e89e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e89e4>); // 102.81% + m_dsmap.SetAt(0x488e9064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e9064>); // 3.01% + m_dsmap.SetAt(0x488e91d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e91d4>); // 17.06% + m_dsmap.SetAt(0x488e91e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e91e4>); // 29.50% + m_dsmap.SetAt(0x48904054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48904054>); // 16.23% + m_dsmap.SetAt(0x490681e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490681e4>); // 2.12% // grandia 3 - m_dsmap.SetAt(0x4127904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4127904c>); // 3.34% - m_dsmap.SetAt(0x484e8860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x484e8860>); // 2.43% - m_dsmap.SetAt(0x48868360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868360>); // 6.79% - m_dsmap.SetAt(0x48868870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868870>); // 43.72% - m_dsmap.SetAt(0x48868b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868b60>); // 5.10% - m_dsmap.SetAt(0x48868f60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868f60>); // 8.97% - m_dsmap.SetAt(0x48869360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48869360>); // 5.45% - m_dsmap.SetAt(0x48869760, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48869760>); // 5.31% - m_dsmap.SetAt(0x488a8060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488a8060>); // 15.76% - m_dsmap.SetAt(0x488a8860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488a8860>); // 18.09% - m_dsmap.SetAt(0x488e8360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8360>); // 27.85% - m_dsmap.SetAt(0x488e8870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8870>); // 2.22% - m_dsmap.SetAt(0x488e8b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8b60>); // 38.40% - m_dsmap.SetAt(0x488e8f60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8f60>); // 57.46% - m_dsmap.SetAt(0x488e9360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e9360>); // 9.74% - m_dsmap.SetAt(0x488e9760, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e9760>); // 3.27% - m_dsmap.SetAt(0x49078860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078860>); // 4.65% - m_dsmap.SetAt(0x490e8060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8060>); // 2.28% - m_dsmap.SetAt(0x4c839060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c839060>); // 65.04% - m_dsmap.SetAt(0x4c83964c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c83964c>); // 74.95% - m_dsmap.SetAt(0x4c839660, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c839660>); // 74.27% - m_dsmap.SetAt(0x50368060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x50368060>); // 13.58% - m_dsmap.SetAt(0x41268060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x41268060>); // 19.62% - m_dsmap.SetAt(0x41268070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x41268070>); // 13.02% - m_dsmap.SetAt(0x41268870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x41268870>); // 8.36% - m_dsmap.SetAt(0x48868760, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868760>); // 13.93% - m_dsmap.SetAt(0x48878760, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878760>); // 8.65% - m_dsmap.SetAt(0x48879760, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879760>); // 16.83% - m_dsmap.SetAt(0x488f8f60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f8f60>); // 41.28% - m_dsmap.SetAt(0x49068860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068860>); // 11.27% - m_dsmap.SetAt(0x49068870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068870>); // 8.85% - m_dsmap.SetAt(0x49078060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078060>); // 6.82% + m_dsmap.SetAt(0x4127904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4127904c>); // 3.34% + m_dsmap.SetAt(0x484e8860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x484e8860>); // 2.43% + m_dsmap.SetAt(0x48868360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868360>); // 6.79% + m_dsmap.SetAt(0x48868870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868870>); // 43.72% + m_dsmap.SetAt(0x48868b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868b60>); // 5.10% + m_dsmap.SetAt(0x48868f60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868f60>); // 8.97% + m_dsmap.SetAt(0x48869360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48869360>); // 5.45% + m_dsmap.SetAt(0x48869760, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48869760>); // 5.31% + m_dsmap.SetAt(0x488a8060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488a8060>); // 15.76% + m_dsmap.SetAt(0x488a8860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488a8860>); // 18.09% + m_dsmap.SetAt(0x488e8360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8360>); // 27.85% + m_dsmap.SetAt(0x488e8870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8870>); // 2.22% + m_dsmap.SetAt(0x488e8b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8b60>); // 38.40% + m_dsmap.SetAt(0x488e8f60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8f60>); // 57.46% + m_dsmap.SetAt(0x488e9360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e9360>); // 9.74% + m_dsmap.SetAt(0x488e9760, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e9760>); // 3.27% + m_dsmap.SetAt(0x49078860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078860>); // 4.65% + m_dsmap.SetAt(0x490e8060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e8060>); // 2.28% + m_dsmap.SetAt(0x4c839060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c839060>); // 65.04% + m_dsmap.SetAt(0x4c83964c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c83964c>); // 74.95% + m_dsmap.SetAt(0x4c839660, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c839660>); // 74.27% + m_dsmap.SetAt(0x50368060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x50368060>); // 13.58% + m_dsmap.SetAt(0x41268060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x41268060>); // 19.62% + m_dsmap.SetAt(0x41268070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x41268070>); // 13.02% + m_dsmap.SetAt(0x41268870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x41268870>); // 8.36% + m_dsmap.SetAt(0x48868760, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868760>); // 13.93% + m_dsmap.SetAt(0x48878760, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878760>); // 8.65% + m_dsmap.SetAt(0x48879760, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48879760>); // 16.83% + m_dsmap.SetAt(0x488f8f60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488f8f60>); // 41.28% + m_dsmap.SetAt(0x49068860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068860>); // 11.27% + m_dsmap.SetAt(0x49068870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068870>); // 8.85% + m_dsmap.SetAt(0x49078060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078060>); // 6.82% // rumble roses - m_dsmap.SetAt(0x1fe78164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe78164>); // 26.31% - m_dsmap.SetAt(0x1fe79164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe79164>); // 9.96% - m_dsmap.SetAt(0x48804164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804164>); // 3.72% - m_dsmap.SetAt(0x48804964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804964>); // 2.84% - m_dsmap.SetAt(0x48838164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48838164>); // 16.00% - m_dsmap.SetAt(0x48878164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878164>); // 13.15% - m_dsmap.SetAt(0x48878964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878964>); // 10.21% - m_dsmap.SetAt(0x4887b964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887b964>); // 35.06% - m_dsmap.SetAt(0x490e8164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8164>); // 3.90% - m_dsmap.SetAt(0x490e8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8964>); // 4.73% - m_dsmap.SetAt(0x4b0e8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b0e8864>); // 3.54% - m_dsmap.SetAt(0x4c48484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c48484c>); // 2.49% - m_dsmap.SetAt(0x4c830164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c830164>); // 35.21% - m_dsmap.SetAt(0x4c8e8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8e8864>); // 3.87% - m_dsmap.SetAt(0x55384874, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x55384874>); // 7.93% + m_dsmap.SetAt(0x1fe78164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe78164>); // 26.31% + m_dsmap.SetAt(0x1fe79164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe79164>); // 9.96% + m_dsmap.SetAt(0x48804164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804164>); // 3.72% + m_dsmap.SetAt(0x48804964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804964>); // 2.84% + m_dsmap.SetAt(0x48838164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48838164>); // 16.00% + m_dsmap.SetAt(0x48878164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878164>); // 13.15% + m_dsmap.SetAt(0x48878964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878964>); // 10.21% + m_dsmap.SetAt(0x4887b964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887b964>); // 35.06% + m_dsmap.SetAt(0x490e8164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e8164>); // 3.90% + m_dsmap.SetAt(0x490e8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e8964>); // 4.73% + m_dsmap.SetAt(0x4b0e8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b0e8864>); // 3.54% + m_dsmap.SetAt(0x4c48484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c48484c>); // 2.49% + m_dsmap.SetAt(0x4c830164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c830164>); // 35.21% + m_dsmap.SetAt(0x4c8e8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c8e8864>); // 3.87% + m_dsmap.SetAt(0x55384874, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x55384874>); // 7.93% // dmc - m_dsmap.SetAt(0x1fe39058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe39058>); // 8.57% - m_dsmap.SetAt(0x1fe68968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68968>); // 3.81% - m_dsmap.SetAt(0x1fe78158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe78158>); // 2.93% - m_dsmap.SetAt(0x1fea8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fea8968>); // 2.95% - m_dsmap.SetAt(0x1fee8978, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8978>); // 2.32% - m_dsmap.SetAt(0x45204078, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x45204078>); // 3.29% - m_dsmap.SetAt(0x4520424c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4520424c>); // 9.45% - m_dsmap.SetAt(0x48804078, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804078>); // 7.61% - m_dsmap.SetAt(0x48830068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48830068>); // 11.67% - m_dsmap.SetAt(0x48878168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878168>); // 100.91% - m_dsmap.SetAt(0x490e8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8968>); // 3.44% - m_dsmap.SetAt(0x4c43804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c43804c>); // 19.54% - m_dsmap.SetAt(0x4c839068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c839068>); // 13.91% - m_dsmap.SetAt(0x4d068968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068968>); // 3.21% - m_dsmap.SetAt(0x54204078, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x54204078>); // 3.06% - m_dsmap.SetAt(0x5420424c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5420424c>); // 9.69% - m_dsmap.SetAt(0x4423904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4423904c>); // 8.89% - m_dsmap.SetAt(0x4427904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4427904c>); // 28.32% - m_dsmap.SetAt(0x4c87914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c87914c>); // 45.10% - m_dsmap.SetAt(0x4d07804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d07804c>); // 2.21% - m_dsmap.SetAt(0x1fe20968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe20968>); // 2.76% - m_dsmap.SetAt(0x48830868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48830868>); // 5.27% - m_dsmap.SetAt(0x4c8e8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8e8968>); // 2.39% + m_dsmap.SetAt(0x1fe39058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe39058>); // 8.57% + m_dsmap.SetAt(0x1fe68968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe68968>); // 3.81% + m_dsmap.SetAt(0x1fe78158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe78158>); // 2.93% + m_dsmap.SetAt(0x1fea8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fea8968>); // 2.95% + m_dsmap.SetAt(0x1fee8978, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee8978>); // 2.32% + m_dsmap.SetAt(0x45204078, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x45204078>); // 3.29% + m_dsmap.SetAt(0x4520424c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4520424c>); // 9.45% + m_dsmap.SetAt(0x48804078, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804078>); // 7.61% + m_dsmap.SetAt(0x48830068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48830068>); // 11.67% + m_dsmap.SetAt(0x48878168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878168>); // 100.91% + m_dsmap.SetAt(0x490e8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e8968>); // 3.44% + m_dsmap.SetAt(0x4c43804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c43804c>); // 19.54% + m_dsmap.SetAt(0x4c839068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c839068>); // 13.91% + m_dsmap.SetAt(0x4d068968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d068968>); // 3.21% + m_dsmap.SetAt(0x54204078, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x54204078>); // 3.06% + m_dsmap.SetAt(0x5420424c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5420424c>); // 9.69% + m_dsmap.SetAt(0x4423904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4423904c>); // 8.89% + m_dsmap.SetAt(0x4427904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4427904c>); // 28.32% + m_dsmap.SetAt(0x4c87914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c87914c>); // 45.10% + m_dsmap.SetAt(0x4d07804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d07804c>); // 2.21% + m_dsmap.SetAt(0x1fe20968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe20968>); // 2.76% + m_dsmap.SetAt(0x48830868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48830868>); // 5.27% + m_dsmap.SetAt(0x4c8e8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c8e8968>); // 2.39% // xenosaga 2 - m_dsmap.SetAt(0x1fe0404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe0404c>); // 2.08% - m_dsmap.SetAt(0x1fe58174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe58174>); // 4.50% - m_dsmap.SetAt(0x1fe68864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68864>); // 22.20% - m_dsmap.SetAt(0x1fea8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fea8964>); // 2.70% - m_dsmap.SetAt(0x1fee804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee804c>); // 13.85% - m_dsmap.SetAt(0x48468864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48468864>); // 5.27% - m_dsmap.SetAt(0x48478164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48478164>); // 4.61% - m_dsmap.SetAt(0x48804074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804074>); // 14.26% - m_dsmap.SetAt(0x488688e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488688e4>); // 10.57% - m_dsmap.SetAt(0x488a88e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488a88e4>); // 2.18% - m_dsmap.SetAt(0x488e80e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e80e4>); // 2.10% - m_dsmap.SetAt(0x488e88e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e88e4>); // 4.96% - m_dsmap.SetAt(0x4901004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4901004c>); // 2.15% - m_dsmap.SetAt(0x4905804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4905804c>); // 3.05% - m_dsmap.SetAt(0x49059054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49059054>); // 4.00% - m_dsmap.SetAt(0x49069064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49069064>); // 2.42% - m_dsmap.SetAt(0x4947824c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4947824c>); // 3.04% - m_dsmap.SetAt(0x4c404054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c404054>); // 14.22% - m_dsmap.SetAt(0x4c804054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c804054>); // 14.22% - m_dsmap.SetAt(0x4c839054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c839054>); // 24.70% - m_dsmap.SetAt(0x4d004054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d004054>); // 14.09% - m_dsmap.SetAt(0x4d038054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d038054>); // 30.21% - m_dsmap.SetAt(0x4d039054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d039054>); // 24.82% - m_dsmap.SetAt(0x4d068864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068864>); // 14.72% - m_dsmap.SetAt(0x4d069064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d069064>); // 5.63% - m_dsmap.SetAt(0x51229064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x51229064>); // 8.77% + m_dsmap.SetAt(0x1fe0404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe0404c>); // 2.08% + m_dsmap.SetAt(0x1fe58174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe58174>); // 4.50% + m_dsmap.SetAt(0x1fe68864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe68864>); // 22.20% + m_dsmap.SetAt(0x1fea8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fea8964>); // 2.70% + m_dsmap.SetAt(0x1fee804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee804c>); // 13.85% + m_dsmap.SetAt(0x48468864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48468864>); // 5.27% + m_dsmap.SetAt(0x48478164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48478164>); // 4.61% + m_dsmap.SetAt(0x48804074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804074>); // 14.26% + m_dsmap.SetAt(0x488688e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488688e4>); // 10.57% + m_dsmap.SetAt(0x488a88e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488a88e4>); // 2.18% + m_dsmap.SetAt(0x488e80e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e80e4>); // 2.10% + m_dsmap.SetAt(0x488e88e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e88e4>); // 4.96% + m_dsmap.SetAt(0x4901004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4901004c>); // 2.15% + m_dsmap.SetAt(0x4905804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4905804c>); // 3.05% + m_dsmap.SetAt(0x49059054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49059054>); // 4.00% + m_dsmap.SetAt(0x49069064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49069064>); // 2.42% + m_dsmap.SetAt(0x4947824c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4947824c>); // 3.04% + m_dsmap.SetAt(0x4c404054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c404054>); // 14.22% + m_dsmap.SetAt(0x4c804054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c804054>); // 14.22% + m_dsmap.SetAt(0x4c839054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c839054>); // 24.70% + m_dsmap.SetAt(0x4d004054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d004054>); // 14.09% + m_dsmap.SetAt(0x4d038054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d038054>); // 30.21% + m_dsmap.SetAt(0x4d039054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d039054>); // 24.82% + m_dsmap.SetAt(0x4d068864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d068864>); // 14.72% + m_dsmap.SetAt(0x4d069064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d069064>); // 5.63% + m_dsmap.SetAt(0x51229064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x51229064>); // 8.77% // nfs mw - m_dsmap.SetAt(0x1fe68168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68168>); // 13.79% - m_dsmap.SetAt(0x1fe68964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68964>); // 95.57% - m_dsmap.SetAt(0x1fe6896a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe6896a>); // 3.34% - m_dsmap.SetAt(0x4805904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4805904c>); // 13.79% - m_dsmap.SetAt(0x4883814e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883814e>); // 6.64% - m_dsmap.SetAt(0x48868168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868168>); // 4.64% - m_dsmap.SetAt(0x4886816a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886816a>); // 3.61% - m_dsmap.SetAt(0x49078164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078164>); // 19.92% - m_dsmap.SetAt(0x49078964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078964>); // 10.68% - m_dsmap.SetAt(0x4927904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4927904c>); // 19.88% - m_dsmap.SetAt(0x4b004064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b004064>); // 9.18% - m_dsmap.SetAt(0x4b004068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b004068>); // 22.54% - m_dsmap.SetAt(0x4b004864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b004864>); // 12.87% - m_dsmap.SetAt(0x4b004868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b004868>); // 26.79% - m_dsmap.SetAt(0x4b028064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b028064>); // 8.86% - m_dsmap.SetAt(0x4b028068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b028068>); // 20.85% - m_dsmap.SetAt(0x4b028864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b028864>); // 8.67% - m_dsmap.SetAt(0x4b028868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b028868>); // 17.21% - m_dsmap.SetAt(0x4b029064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b029064>); // 4.71% - m_dsmap.SetAt(0x4b029068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b029068>); // 26.95% - m_dsmap.SetAt(0x4b038164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b038164>); // 9.93% - m_dsmap.SetAt(0x4b038964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b038964>); // 4.37% - m_dsmap.SetAt(0x4c83804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c83804c>); // 20.46% - m_dsmap.SetAt(0x4c83804e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c83804e>); // 5.63% - m_dsmap.SetAt(0x5127904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5127904c>); // 18.99% - m_dsmap.SetAt(0x5fe19064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe19064>); // 24.57% - m_dsmap.SetAt(0x1fe6816a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe6816a>); // 8.86% - m_dsmap.SetAt(0x4906816a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4906816a>); // 2.86% - m_dsmap.SetAt(0x4906896a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4906896a>); // 2.99% - m_dsmap.SetAt(0x49079164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49079164>); // 3.93% - m_dsmap.SetAt(0x4a838964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a838964>); // 3.66% + m_dsmap.SetAt(0x1fe68168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe68168>); // 13.79% + m_dsmap.SetAt(0x1fe68964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe68964>); // 95.57% + m_dsmap.SetAt(0x1fe6896a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe6896a>); // 3.34% + m_dsmap.SetAt(0x4805904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4805904c>); // 13.79% + m_dsmap.SetAt(0x4883814e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4883814e>); // 6.64% + m_dsmap.SetAt(0x48868168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868168>); // 4.64% + m_dsmap.SetAt(0x4886816a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4886816a>); // 3.61% + m_dsmap.SetAt(0x49078164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078164>); // 19.92% + m_dsmap.SetAt(0x49078964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078964>); // 10.68% + m_dsmap.SetAt(0x4927904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4927904c>); // 19.88% + m_dsmap.SetAt(0x4b004064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b004064>); // 9.18% + m_dsmap.SetAt(0x4b004068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b004068>); // 22.54% + m_dsmap.SetAt(0x4b004864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b004864>); // 12.87% + m_dsmap.SetAt(0x4b004868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b004868>); // 26.79% + m_dsmap.SetAt(0x4b028064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b028064>); // 8.86% + m_dsmap.SetAt(0x4b028068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b028068>); // 20.85% + m_dsmap.SetAt(0x4b028864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b028864>); // 8.67% + m_dsmap.SetAt(0x4b028868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b028868>); // 17.21% + m_dsmap.SetAt(0x4b029064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b029064>); // 4.71% + m_dsmap.SetAt(0x4b029068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b029068>); // 26.95% + m_dsmap.SetAt(0x4b038164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b038164>); // 9.93% + m_dsmap.SetAt(0x4b038964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b038964>); // 4.37% + m_dsmap.SetAt(0x4c83804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c83804c>); // 20.46% + m_dsmap.SetAt(0x4c83804e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c83804e>); // 5.63% + m_dsmap.SetAt(0x5127904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5127904c>); // 18.99% + m_dsmap.SetAt(0x5fe19064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe19064>); // 24.57% + m_dsmap.SetAt(0x1fe6816a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe6816a>); // 8.86% + m_dsmap.SetAt(0x4906816a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4906816a>); // 2.86% + m_dsmap.SetAt(0x4906896a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4906896a>); // 2.99% + m_dsmap.SetAt(0x49079164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49079164>); // 3.93% + m_dsmap.SetAt(0x4a838964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4a838964>); // 3.66% // berserk - m_dsmap.SetAt(0x4c8e8b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8e8b64>); // 38.62% - m_dsmap.SetAt(0x4c8fb964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8fb964>); // 13.39% + m_dsmap.SetAt(0x4c8e8b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c8e8b64>); // 38.62% + m_dsmap.SetAt(0x4c8fb964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c8fb964>); // 13.39% // castlevania - m_dsmap.SetAt(0x1fe1004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe1004c>); // 10.85% - m_dsmap.SetAt(0x1fe3104d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3104d>); // 12.56% - m_dsmap.SetAt(0x1fe3104e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3104e>); // 12.59% - m_dsmap.SetAt(0x1fe5904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe5904c>); // 11.64% - m_dsmap.SetAt(0x1fe78868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe78868>); // 23.47% - m_dsmap.SetAt(0x48838058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48838058>); // 22.09% - m_dsmap.SetAt(0x48878868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878868>); // 101.01% - m_dsmap.SetAt(0x48884168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884168>); // 9.60% - m_dsmap.SetAt(0x488c8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488c8968>); // 8.74% - m_dsmap.SetAt(0x488eb968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488eb968>); // 2.58% - m_dsmap.SetAt(0x49078868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078868>); // 73.77% - m_dsmap.SetAt(0x4c93904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c93904c>); // 15.49% - m_dsmap.SetAt(0x4d00407a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d00407a>); // 22.47% + m_dsmap.SetAt(0x1fe1004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe1004c>); // 10.85% + m_dsmap.SetAt(0x1fe3104d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe3104d>); // 12.56% + m_dsmap.SetAt(0x1fe3104e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe3104e>); // 12.59% + m_dsmap.SetAt(0x1fe5904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe5904c>); // 11.64% + m_dsmap.SetAt(0x1fe78868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe78868>); // 23.47% + m_dsmap.SetAt(0x48838058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48838058>); // 22.09% + m_dsmap.SetAt(0x48878868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878868>); // 101.01% + m_dsmap.SetAt(0x48884168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48884168>); // 9.60% + m_dsmap.SetAt(0x488c8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488c8968>); // 8.74% + m_dsmap.SetAt(0x488eb968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488eb968>); // 2.58% + m_dsmap.SetAt(0x49078868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078868>); // 73.77% + m_dsmap.SetAt(0x4c93904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c93904c>); // 15.49% + m_dsmap.SetAt(0x4d00407a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d00407a>); // 22.47% // okami - m_dsmap.SetAt(0x1fe18058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe18058>); // 13.85% - m_dsmap.SetAt(0x45218058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x45218058>); // 34.00% - m_dsmap.SetAt(0x48839158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48839158>); // 25.00% - m_dsmap.SetAt(0x48878058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878058>); // 49.93% - m_dsmap.SetAt(0x48879058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879058>); // 11.51% - m_dsmap.SetAt(0x488e8168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8168>); // 17.61% - m_dsmap.SetAt(0x488f8168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f8168>); // 2.56% - m_dsmap.SetAt(0x4a83804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a83804c>); // 19.67% - m_dsmap.SetAt(0x4c43904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c43904c>); // 91.95% - m_dsmap.SetAt(0x5fe59068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe59068>); // 78.68% - m_dsmap.SetAt(0x5fe7104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe7104c>); // 17.56% + m_dsmap.SetAt(0x1fe18058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe18058>); // 13.85% + m_dsmap.SetAt(0x45218058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x45218058>); // 34.00% + m_dsmap.SetAt(0x48839158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48839158>); // 25.00% + m_dsmap.SetAt(0x48878058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878058>); // 49.93% + m_dsmap.SetAt(0x48879058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48879058>); // 11.51% + m_dsmap.SetAt(0x488e8168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8168>); // 17.61% + m_dsmap.SetAt(0x488f8168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488f8168>); // 2.56% + m_dsmap.SetAt(0x4a83804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4a83804c>); // 19.67% + m_dsmap.SetAt(0x4c43904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c43904c>); // 91.95% + m_dsmap.SetAt(0x5fe59068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe59068>); // 78.68% + m_dsmap.SetAt(0x5fe7104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe7104c>); // 17.56% // bully - m_dsmap.SetAt(0x1fe04077, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04077>); // 9.73% - m_dsmap.SetAt(0x1fe04864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04864>); // 7.26% - m_dsmap.SetAt(0x48804864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804864>); // 10.05% - m_dsmap.SetAt(0x4d03104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d03104c>); // 44.70% - m_dsmap.SetAt(0x4d068364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068364>); // 17.88% - m_dsmap.SetAt(0x4d068b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068b64>); // 34.20% - m_dsmap.SetAt(0x4d07834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d07834c>); // 15.04% - m_dsmap.SetAt(0x510e8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x510e8964>); // 145.14% - m_dsmap.SetAt(0x5480404d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5480404d>); // 13.76% - m_dsmap.SetAt(0x5501904e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5501904e>); // 26.34% - m_dsmap.SetAt(0x4d078364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d078364>); // 3.95% - m_dsmap.SetAt(0x510e8164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x510e8164>); // 2.53% + m_dsmap.SetAt(0x1fe04077, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04077>); // 9.73% + m_dsmap.SetAt(0x1fe04864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04864>); // 7.26% + m_dsmap.SetAt(0x48804864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804864>); // 10.05% + m_dsmap.SetAt(0x4d03104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d03104c>); // 44.70% + m_dsmap.SetAt(0x4d068364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d068364>); // 17.88% + m_dsmap.SetAt(0x4d068b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d068b64>); // 34.20% + m_dsmap.SetAt(0x4d07834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d07834c>); // 15.04% + m_dsmap.SetAt(0x510e8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x510e8964>); // 145.14% + m_dsmap.SetAt(0x5480404d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5480404d>); // 13.76% + m_dsmap.SetAt(0x5501904e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5501904e>); // 26.34% + m_dsmap.SetAt(0x4d078364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d078364>); // 3.95% + m_dsmap.SetAt(0x510e8164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x510e8164>); // 2.53% // culdcept - m_dsmap.SetAt(0x1fe04056, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04056>); // 4.52% - m_dsmap.SetAt(0x1fe049e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe049e6>); // 12.56% - m_dsmap.SetAt(0x1fe181e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe181e6>); // 2.99% - m_dsmap.SetAt(0x1fe191e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe191e6>); // 5.99% - m_dsmap.SetAt(0x1fe2a1e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe2a1e6>); // 14.05% - m_dsmap.SetAt(0x1fe2a9e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe2a9e6>); // 19.56% - m_dsmap.SetAt(0x1fe31066, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe31066>); // 30.02% - m_dsmap.SetAt(0x1fe391e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe391e6>); // 31.11% - m_dsmap.SetAt(0x1fe3a1e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3a1e6>); // 14.99% - m_dsmap.SetAt(0x1fe581e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe581e6>); // 3.09% - m_dsmap.SetAt(0x1fe591e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe591e6>); // 8.42% - m_dsmap.SetAt(0x1fe991e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe991e6>); // 4.33% - m_dsmap.SetAt(0x1feb91e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1feb91e6>); // 32.00% - m_dsmap.SetAt(0x1fed91e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fed91e6>); // 9.42% - m_dsmap.SetAt(0x488089e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488089e6>); // 4.87% - m_dsmap.SetAt(0x488181e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488181e6>); // 6.56% - m_dsmap.SetAt(0x488281e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488281e6>); // 2.17% - m_dsmap.SetAt(0x488289e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488289e6>); // 7.07% - m_dsmap.SetAt(0x488291e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488291e6>); // 3.84% - m_dsmap.SetAt(0x488581e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488581e6>); // 6.96% - m_dsmap.SetAt(0x488591e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488591e6>); // 2.98% - m_dsmap.SetAt(0x490049e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490049e6>); // 8.71% - m_dsmap.SetAt(0x4d0049e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d0049e6>); // 3.68% - m_dsmap.SetAt(0x4d0181e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d0181e6>); // 14.14% - m_dsmap.SetAt(0x4d0191e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d0191e6>); // 2.29% - m_dsmap.SetAt(0x4d02a1e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d02a1e6>); // 8.65% - m_dsmap.SetAt(0x4d0381e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d0381e6>); // 4.84% - m_dsmap.SetAt(0x4d0391e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d0391e6>); // 17.85% + m_dsmap.SetAt(0x1fe04056, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04056>); // 4.52% + m_dsmap.SetAt(0x1fe049e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe049e6>); // 12.56% + m_dsmap.SetAt(0x1fe181e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe181e6>); // 2.99% + m_dsmap.SetAt(0x1fe191e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe191e6>); // 5.99% + m_dsmap.SetAt(0x1fe2a1e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe2a1e6>); // 14.05% + m_dsmap.SetAt(0x1fe2a9e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe2a9e6>); // 19.56% + m_dsmap.SetAt(0x1fe31066, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe31066>); // 30.02% + m_dsmap.SetAt(0x1fe391e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe391e6>); // 31.11% + m_dsmap.SetAt(0x1fe3a1e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe3a1e6>); // 14.99% + m_dsmap.SetAt(0x1fe581e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe581e6>); // 3.09% + m_dsmap.SetAt(0x1fe591e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe591e6>); // 8.42% + m_dsmap.SetAt(0x1fe991e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe991e6>); // 4.33% + m_dsmap.SetAt(0x1feb91e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1feb91e6>); // 32.00% + m_dsmap.SetAt(0x1fed91e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fed91e6>); // 9.42% + m_dsmap.SetAt(0x488089e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488089e6>); // 4.87% + m_dsmap.SetAt(0x488181e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488181e6>); // 6.56% + m_dsmap.SetAt(0x488281e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488281e6>); // 2.17% + m_dsmap.SetAt(0x488289e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488289e6>); // 7.07% + m_dsmap.SetAt(0x488291e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488291e6>); // 3.84% + m_dsmap.SetAt(0x488581e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488581e6>); // 6.96% + m_dsmap.SetAt(0x488591e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488591e6>); // 2.98% + m_dsmap.SetAt(0x490049e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490049e6>); // 8.71% + m_dsmap.SetAt(0x4d0049e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d0049e6>); // 3.68% + m_dsmap.SetAt(0x4d0181e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d0181e6>); // 14.14% + m_dsmap.SetAt(0x4d0191e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d0191e6>); // 2.29% + m_dsmap.SetAt(0x4d02a1e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d02a1e6>); // 8.65% + m_dsmap.SetAt(0x4d0381e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d0381e6>); // 4.84% + m_dsmap.SetAt(0x4d0391e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d0391e6>); // 17.85% // suikoden 5 - m_dsmap.SetAt(0x40428868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x40428868>); // 11.26% - m_dsmap.SetAt(0x4846834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4846834c>); // 27.05% - m_dsmap.SetAt(0x4847834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4847834c>); // 25.31% - m_dsmap.SetAt(0x48829368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48829368>); // 14.92% - m_dsmap.SetAt(0x4883934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883934c>); // 2.92% - m_dsmap.SetAt(0x48858b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48858b68>); // 6.03% - m_dsmap.SetAt(0x488a8b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488a8b68>); // 11.15% - m_dsmap.SetAt(0x49028868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49028868>); // 10.91% - m_dsmap.SetAt(0x4d068868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068868>); // 33.68% + m_dsmap.SetAt(0x40428868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x40428868>); // 11.26% + m_dsmap.SetAt(0x4846834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4846834c>); // 27.05% + m_dsmap.SetAt(0x4847834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4847834c>); // 25.31% + m_dsmap.SetAt(0x48829368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48829368>); // 14.92% + m_dsmap.SetAt(0x4883934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4883934c>); // 2.92% + m_dsmap.SetAt(0x48858b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48858b68>); // 6.03% + m_dsmap.SetAt(0x488a8b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488a8b68>); // 11.15% + m_dsmap.SetAt(0x49028868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49028868>); // 10.91% + m_dsmap.SetAt(0x4d068868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d068868>); // 33.68% // dq8 - m_dsmap.SetAt(0x1fe0484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe0484c>); // 3.23% - m_dsmap.SetAt(0x1fe3914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3914c>); // 2.27% - m_dsmap.SetAt(0x48404164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48404164>); // 66.92% - m_dsmap.SetAt(0x4883914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883914c>); // 12.11% - m_dsmap.SetAt(0x48c3804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48c3804c>); // 32.84% - m_dsmap.SetAt(0x49004164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004164>); // 67.02% - m_dsmap.SetAt(0x490a8164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490a8164>); // 9.60% - m_dsmap.SetAt(0x490a8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490a8964>); // 5.10% - m_dsmap.SetAt(0x490e914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e914c>); // 25.20% - m_dsmap.SetAt(0x490f914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490f914c>); // 19.10% - m_dsmap.SetAt(0x4c83914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c83914c>); // 3.48% - m_dsmap.SetAt(0x5103804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5103804c>); // 3.03% - m_dsmap.SetAt(0x5103b04c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5103b04c>); // 5.19% + m_dsmap.SetAt(0x1fe0484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe0484c>); // 3.23% + m_dsmap.SetAt(0x1fe3914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe3914c>); // 2.27% + m_dsmap.SetAt(0x48404164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48404164>); // 66.92% + m_dsmap.SetAt(0x4883914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4883914c>); // 12.11% + m_dsmap.SetAt(0x48c3804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48c3804c>); // 32.84% + m_dsmap.SetAt(0x49004164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004164>); // 67.02% + m_dsmap.SetAt(0x490a8164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490a8164>); // 9.60% + m_dsmap.SetAt(0x490a8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490a8964>); // 5.10% + m_dsmap.SetAt(0x490e914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e914c>); // 25.20% + m_dsmap.SetAt(0x490f914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490f914c>); // 19.10% + m_dsmap.SetAt(0x4c83914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c83914c>); // 3.48% + m_dsmap.SetAt(0x5103804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5103804c>); // 3.03% + m_dsmap.SetAt(0x5103b04c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5103b04c>); // 5.19% // resident evil 4 - m_dsmap.SetAt(0x1fe18064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe18064>); // 13.84% - m_dsmap.SetAt(0x4903904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4903904c>); // 19.51% - m_dsmap.SetAt(0x4b068164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b068164>); // 6.54% - m_dsmap.SetAt(0x4c879164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c879164>); // 26.76% - m_dsmap.SetAt(0x4d07814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d07814c>); // 9.53% - m_dsmap.SetAt(0x5120404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5120404c>); // 2.51% - m_dsmap.SetAt(0x5483904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5483904c>); // 4.94% - m_dsmap.SetAt(0x4883064c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883064c>); // 39.22% - m_dsmap.SetAt(0x4903814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4903814c>); // 12.20% - m_dsmap.SetAt(0x5fe68964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe68964>); // 5.03% + m_dsmap.SetAt(0x1fe18064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe18064>); // 13.84% + m_dsmap.SetAt(0x4903904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4903904c>); // 19.51% + m_dsmap.SetAt(0x4b068164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b068164>); // 6.54% + m_dsmap.SetAt(0x4c879164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c879164>); // 26.76% + m_dsmap.SetAt(0x4d07814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d07814c>); // 9.53% + m_dsmap.SetAt(0x5120404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5120404c>); // 2.51% + m_dsmap.SetAt(0x5483904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5483904c>); // 4.94% + m_dsmap.SetAt(0x4883064c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4883064c>); // 39.22% + m_dsmap.SetAt(0x4903814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4903814c>); // 12.20% + m_dsmap.SetAt(0x5fe68964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe68964>); // 5.03% // tomoyo after - m_dsmap.SetAt(0x1fe38059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe38059>); // 25.29% - m_dsmap.SetAt(0x1fe39059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe39059>); // 24.40% - m_dsmap.SetAt(0x48478068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48478068>); // 9.36% - m_dsmap.SetAt(0x48818068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48818068>); // 28.04% - m_dsmap.SetAt(0x48878068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878068>); // 27.11% - m_dsmap.SetAt(0x49058068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49058068>); // 19.28% - m_dsmap.SetAt(0x4a858068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a858068>); // 19.13% + m_dsmap.SetAt(0x1fe38059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe38059>); // 25.29% + m_dsmap.SetAt(0x1fe39059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe39059>); // 24.40% + m_dsmap.SetAt(0x48478068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48478068>); // 9.36% + m_dsmap.SetAt(0x48818068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48818068>); // 28.04% + m_dsmap.SetAt(0x48878068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878068>); // 27.11% + m_dsmap.SetAt(0x49058068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49058068>); // 19.28% + m_dsmap.SetAt(0x4a858068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4a858068>); // 19.13% // .hack redemption - m_dsmap.SetAt(0x1fe1804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe1804d>); // 3.91% - m_dsmap.SetAt(0x1fe1914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe1914c>); // 6.85% - m_dsmap.SetAt(0x4123004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4123004c>); // 23.69% - m_dsmap.SetAt(0x48404074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48404074>); // 9.77% - m_dsmap.SetAt(0x48469064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48469064>); // 25.50% - m_dsmap.SetAt(0x488f8364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f8364>); // 3.84% - m_dsmap.SetAt(0x488f9364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f9364>); // 8.26% - m_dsmap.SetAt(0x49004074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004074>); // 9.71% - m_dsmap.SetAt(0x49004864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004864>); // 8.46% - m_dsmap.SetAt(0x4c41804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c41804c>); // 16.44% - m_dsmap.SetAt(0x5fe1004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe1004c>); // 14.89% - m_dsmap.SetAt(0x1fe04b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04b64>); // 7.80% - m_dsmap.SetAt(0x48869364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48869364>); // 30.82% - m_dsmap.SetAt(0x4d00404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d00404c>); // 10.07% + m_dsmap.SetAt(0x1fe1804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe1804d>); // 3.91% + m_dsmap.SetAt(0x1fe1914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe1914c>); // 6.85% + m_dsmap.SetAt(0x4123004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4123004c>); // 23.69% + m_dsmap.SetAt(0x48404074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48404074>); // 9.77% + m_dsmap.SetAt(0x48469064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48469064>); // 25.50% + m_dsmap.SetAt(0x488f8364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488f8364>); // 3.84% + m_dsmap.SetAt(0x488f9364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488f9364>); // 8.26% + m_dsmap.SetAt(0x49004074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004074>); // 9.71% + m_dsmap.SetAt(0x49004864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004864>); // 8.46% + m_dsmap.SetAt(0x4c41804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c41804c>); // 16.44% + m_dsmap.SetAt(0x5fe1004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe1004c>); // 14.89% + m_dsmap.SetAt(0x1fe04b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04b64>); // 7.80% + m_dsmap.SetAt(0x48869364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48869364>); // 30.82% + m_dsmap.SetAt(0x4d00404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d00404c>); // 10.07% // wild arms 5 - m_dsmap.SetAt(0x1fe19050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe19050>); // 3.93% - m_dsmap.SetAt(0x4845804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4845804c>); // 17.60% - m_dsmap.SetAt(0x4845904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4845904c>); // 15.13% - m_dsmap.SetAt(0x48804854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804854>); // 17.14% - m_dsmap.SetAt(0x4885884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885884c>); // 15.74% - m_dsmap.SetAt(0x488e8764, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8764>); // 29.30% - m_dsmap.SetAt(0x48c68864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48c68864>); // 9.65% - m_dsmap.SetAt(0x49068964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068964>); // 10.47% - m_dsmap.SetAt(0x4b068864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b068864>); // 2.18% - m_dsmap.SetAt(0x4d068064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068064>); // 3.54% - m_dsmap.SetAt(0x5fe04764, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe04764>); // 4.41% - m_dsmap.SetAt(0x5fe39054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe39054>); // 24.84% + m_dsmap.SetAt(0x1fe19050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe19050>); // 3.93% + m_dsmap.SetAt(0x4845804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4845804c>); // 17.60% + m_dsmap.SetAt(0x4845904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4845904c>); // 15.13% + m_dsmap.SetAt(0x48804854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804854>); // 17.14% + m_dsmap.SetAt(0x4885884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4885884c>); // 15.74% + m_dsmap.SetAt(0x488e8764, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8764>); // 29.30% + m_dsmap.SetAt(0x48c68864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48c68864>); // 9.65% + m_dsmap.SetAt(0x49068964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068964>); // 10.47% + m_dsmap.SetAt(0x4b068864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b068864>); // 2.18% + m_dsmap.SetAt(0x4d068064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d068064>); // 3.54% + m_dsmap.SetAt(0x5fe04764, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe04764>); // 4.41% + m_dsmap.SetAt(0x5fe39054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe39054>); // 24.84% // shadow of the colossus - m_dsmap.SetAt(0x1fe04064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04064>); // 8.04% - m_dsmap.SetAt(0x1fe1004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe1004d>); // 12.55% - m_dsmap.SetAt(0x48868364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868364>); // 8.22% - m_dsmap.SetAt(0x48868b24, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868b24>); // 16.58% - m_dsmap.SetAt(0x488e8264, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8264>); // 4.32% - m_dsmap.SetAt(0x48938064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48938064>); // 46.18% - m_dsmap.SetAt(0x48939064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48939064>); // 21.41% - m_dsmap.SetAt(0x49004064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004064>); // 50.31% - m_dsmap.SetAt(0x490e8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8864>); // 14.62% - m_dsmap.SetAt(0x4d004064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d004064>); // 89.65% - m_dsmap.SetAt(0x488e9364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e9364>); // 4.77% - m_dsmap.SetAt(0x4c030064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c030064>); // 31.06% + m_dsmap.SetAt(0x1fe04064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04064>); // 8.04% + m_dsmap.SetAt(0x1fe1004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe1004d>); // 12.55% + m_dsmap.SetAt(0x48868364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868364>); // 8.22% + m_dsmap.SetAt(0x48868b24, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868b24>); // 16.58% + m_dsmap.SetAt(0x488e8264, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8264>); // 4.32% + m_dsmap.SetAt(0x48938064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48938064>); // 46.18% + m_dsmap.SetAt(0x48939064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48939064>); // 21.41% + m_dsmap.SetAt(0x49004064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004064>); // 50.31% + m_dsmap.SetAt(0x490e8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e8864>); // 14.62% + m_dsmap.SetAt(0x4d004064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d004064>); // 89.65% + m_dsmap.SetAt(0x488e9364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e9364>); // 4.77% + m_dsmap.SetAt(0x4c030064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c030064>); // 31.06% // tales of redemption - m_dsmap.SetAt(0x48404254, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48404254>); // 10.04% - m_dsmap.SetAt(0x48478254, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48478254>); // 12.51% - m_dsmap.SetAt(0x48878b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878b64>); // 8.94% - m_dsmap.SetAt(0x48879374, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879374>); // 3.04% - m_dsmap.SetAt(0x488b9054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488b9054>); // 6.91% - m_dsmap.SetAt(0x49078264, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078264>); // 5.61% - m_dsmap.SetAt(0x4c838064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c838064>); // 14.59% - m_dsmap.SetAt(0x4c838854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c838854>); // 14.37% + m_dsmap.SetAt(0x48404254, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48404254>); // 10.04% + m_dsmap.SetAt(0x48478254, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48478254>); // 12.51% + m_dsmap.SetAt(0x48878b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878b64>); // 8.94% + m_dsmap.SetAt(0x48879374, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48879374>); // 3.04% + m_dsmap.SetAt(0x488b9054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488b9054>); // 6.91% + m_dsmap.SetAt(0x49078264, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078264>); // 5.61% + m_dsmap.SetAt(0x4c838064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c838064>); // 14.59% + m_dsmap.SetAt(0x4c838854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c838854>); // 14.37% // digital devil saga - m_dsmap.SetAt(0x1fe39070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe39070>); // 6.48% - m_dsmap.SetAt(0x40204250, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x40204250>); // 5.59% - m_dsmap.SetAt(0x48404050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48404050>); // 6.08% - m_dsmap.SetAt(0x484e9070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x484e9070>); // 7.79% - m_dsmap.SetAt(0x48804060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804060>); // 3.20% - m_dsmap.SetAt(0x48804150, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804150>); // 3.11% - m_dsmap.SetAt(0x48868b70, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868b70>); // 6.24% - m_dsmap.SetAt(0x48878060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878060>); // 6.39% - m_dsmap.SetAt(0x48878150, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878150>); // 9.31% - m_dsmap.SetAt(0x48878360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878360>); // 3.31% - m_dsmap.SetAt(0x48879360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879360>); // 14.19% - m_dsmap.SetAt(0x48884870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884870>); // 19.31% - m_dsmap.SetAt(0x488e8860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8860>); // 6.53% - m_dsmap.SetAt(0x48904270, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48904270>); // 27.83% - m_dsmap.SetAt(0x49068070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068070>); // 2.46% - m_dsmap.SetAt(0x49078360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078360>); // 15.46% - m_dsmap.SetAt(0x49079060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49079060>); // 2.16% - m_dsmap.SetAt(0x49079360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49079360>); // 9.74% - m_dsmap.SetAt(0x490e8860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8860>); // 7.56% - m_dsmap.SetAt(0x490e8870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8870>); // 5.96% - m_dsmap.SetAt(0x4a878060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a878060>); // 7.13% - m_dsmap.SetAt(0x48804b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804b60>); // 2.22% - m_dsmap.SetAt(0x49078070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078070>); // 5.87% + m_dsmap.SetAt(0x1fe39070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe39070>); // 6.48% + m_dsmap.SetAt(0x40204250, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x40204250>); // 5.59% + m_dsmap.SetAt(0x48404050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48404050>); // 6.08% + m_dsmap.SetAt(0x484e9070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x484e9070>); // 7.79% + m_dsmap.SetAt(0x48804060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804060>); // 3.20% + m_dsmap.SetAt(0x48804150, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804150>); // 3.11% + m_dsmap.SetAt(0x48868b70, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868b70>); // 6.24% + m_dsmap.SetAt(0x48878060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878060>); // 6.39% + m_dsmap.SetAt(0x48878150, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878150>); // 9.31% + m_dsmap.SetAt(0x48878360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878360>); // 3.31% + m_dsmap.SetAt(0x48879360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48879360>); // 14.19% + m_dsmap.SetAt(0x48884870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48884870>); // 19.31% + m_dsmap.SetAt(0x488e8860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8860>); // 6.53% + m_dsmap.SetAt(0x48904270, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48904270>); // 27.83% + m_dsmap.SetAt(0x49068070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068070>); // 2.46% + m_dsmap.SetAt(0x49078360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078360>); // 15.46% + m_dsmap.SetAt(0x49079060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49079060>); // 2.16% + m_dsmap.SetAt(0x49079360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49079360>); // 9.74% + m_dsmap.SetAt(0x490e8860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e8860>); // 7.56% + m_dsmap.SetAt(0x490e8870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e8870>); // 5.96% + m_dsmap.SetAt(0x4a878060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4a878060>); // 7.13% + m_dsmap.SetAt(0x48804b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804b60>); // 2.22% + m_dsmap.SetAt(0x49078070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078070>); // 5.87% // dbzbt2 - m_dsmap.SetAt(0x48878674, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878674>); // 74.94% - m_dsmap.SetAt(0x4887970c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887970c>); // 3.61% - m_dsmap.SetAt(0x4906804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4906804c>); // 29.50% - m_dsmap.SetAt(0x4906884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4906884c>); // 9.09% - m_dsmap.SetAt(0x49078054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078054>); // 29.33% - m_dsmap.SetAt(0x49079054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49079054>); // 6.42% - m_dsmap.SetAt(0x4c904064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c904064>); // 7.49% - m_dsmap.SetAt(0x543081e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x543081e4>); // 5.74% - m_dsmap.SetAt(0x543089e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x543089e4>); // 4.18% + m_dsmap.SetAt(0x48878674, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878674>); // 74.94% + m_dsmap.SetAt(0x4887970c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887970c>); // 3.61% + m_dsmap.SetAt(0x4906804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4906804c>); // 29.50% + m_dsmap.SetAt(0x4906884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4906884c>); // 9.09% + m_dsmap.SetAt(0x49078054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078054>); // 29.33% + m_dsmap.SetAt(0x49079054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49079054>); // 6.42% + m_dsmap.SetAt(0x4c904064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c904064>); // 7.49% + m_dsmap.SetAt(0x543081e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x543081e4>); // 5.74% + m_dsmap.SetAt(0x543089e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x543089e4>); // 4.18% // dbzbt3 - m_dsmap.SetAt(0x4883104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883104c>); // 4.75% - m_dsmap.SetAt(0x488391cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488391cc>); // 12.37% - m_dsmap.SetAt(0x4885904e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885904e>); // 15.28% - m_dsmap.SetAt(0x48859074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48859074>); // 14.47% - m_dsmap.SetAt(0x48868864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868864>); // 5.07% - m_dsmap.SetAt(0x48868964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868964>); // 39.07% - m_dsmap.SetAt(0x489081e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x489081e4>); // 7.98% - m_dsmap.SetAt(0x48968864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48968864>); // 13.31% - m_dsmap.SetAt(0x4905904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4905904c>); // 28.18% - m_dsmap.SetAt(0x4a40404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a40404c>); // 9.29% - m_dsmap.SetAt(0x4a879164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a879164>); // 4.04% - m_dsmap.SetAt(0x4c45904e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c45904e>); // 30.87% - m_dsmap.SetAt(0x4c469064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c469064>); // 8.57% - m_dsmap.SetAt(0x4c80404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c80404c>); // 10.03% - m_dsmap.SetAt(0x4c80404e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c80404e>); // 14.23% - m_dsmap.SetAt(0x4c83004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c83004c>); // 19.65% - m_dsmap.SetAt(0x4c8391cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8391cc>); // 24.75% - m_dsmap.SetAt(0x4c869064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c869064>); // 9.50% - m_dsmap.SetAt(0x4d03004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d03004c>); // 36.68% - m_dsmap.SetAt(0x5fe1904e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe1904e>); // 16.66% - m_dsmap.SetAt(0x1fe3004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3004c>); // 3.94% - m_dsmap.SetAt(0x48478064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48478064>); // 20.73% - m_dsmap.SetAt(0x48868164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868164>); // 8.42% - m_dsmap.SetAt(0x48878864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878864>); // 13.89% - m_dsmap.SetAt(0x49068064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068064>); // 10.95% - m_dsmap.SetAt(0x49078864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078864>); // 15.01% - m_dsmap.SetAt(0x4910404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4910404c>); // 4.15% - m_dsmap.SetAt(0x4917804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4917804c>); // 5.33% - m_dsmap.SetAt(0x4917904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4917904c>); // 3.66% - m_dsmap.SetAt(0x49268064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49268064>); // 13.08% - m_dsmap.SetAt(0x4887974c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887974c>); // 2.85% - m_dsmap.SetAt(0x4897904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4897904c>); // 2.15% + m_dsmap.SetAt(0x4883104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4883104c>); // 4.75% + m_dsmap.SetAt(0x488391cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488391cc>); // 12.37% + m_dsmap.SetAt(0x4885904e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4885904e>); // 15.28% + m_dsmap.SetAt(0x48859074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48859074>); // 14.47% + m_dsmap.SetAt(0x48868864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868864>); // 5.07% + m_dsmap.SetAt(0x48868964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868964>); // 39.07% + m_dsmap.SetAt(0x489081e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x489081e4>); // 7.98% + m_dsmap.SetAt(0x48968864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48968864>); // 13.31% + m_dsmap.SetAt(0x4905904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4905904c>); // 28.18% + m_dsmap.SetAt(0x4a40404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4a40404c>); // 9.29% + m_dsmap.SetAt(0x4a879164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4a879164>); // 4.04% + m_dsmap.SetAt(0x4c45904e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c45904e>); // 30.87% + m_dsmap.SetAt(0x4c469064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c469064>); // 8.57% + m_dsmap.SetAt(0x4c80404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c80404c>); // 10.03% + m_dsmap.SetAt(0x4c80404e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c80404e>); // 14.23% + m_dsmap.SetAt(0x4c83004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c83004c>); // 19.65% + m_dsmap.SetAt(0x4c8391cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c8391cc>); // 24.75% + m_dsmap.SetAt(0x4c869064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c869064>); // 9.50% + m_dsmap.SetAt(0x4d03004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d03004c>); // 36.68% + m_dsmap.SetAt(0x5fe1904e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe1904e>); // 16.66% + m_dsmap.SetAt(0x1fe3004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe3004c>); // 3.94% + m_dsmap.SetAt(0x48478064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48478064>); // 20.73% + m_dsmap.SetAt(0x48868164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868164>); // 8.42% + m_dsmap.SetAt(0x48878864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878864>); // 13.89% + m_dsmap.SetAt(0x49068064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068064>); // 10.95% + m_dsmap.SetAt(0x49078864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078864>); // 15.01% + m_dsmap.SetAt(0x4910404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4910404c>); // 4.15% + m_dsmap.SetAt(0x4917804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4917804c>); // 5.33% + m_dsmap.SetAt(0x4917904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4917904c>); // 3.66% + m_dsmap.SetAt(0x49268064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49268064>); // 13.08% + m_dsmap.SetAt(0x4887974c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887974c>); // 2.85% + m_dsmap.SetAt(0x4897904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4897904c>); // 2.15% // disgaea 2 - m_dsmap.SetAt(0x1fe04164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04164>); // 7.12% - m_dsmap.SetAt(0x1fe69174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe69174>); // 13.13% - m_dsmap.SetAt(0x48820b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48820b64>); // 16.33% - m_dsmap.SetAt(0x48830064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48830064>); // 15.18% - m_dsmap.SetAt(0x48869164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48869164>); // 12.42% - m_dsmap.SetAt(0x48879164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879164>); // 8.40% + m_dsmap.SetAt(0x1fe04164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04164>); // 7.12% + m_dsmap.SetAt(0x1fe69174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe69174>); // 13.13% + m_dsmap.SetAt(0x48820b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48820b64>); // 16.33% + m_dsmap.SetAt(0x48830064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48830064>); // 15.18% + m_dsmap.SetAt(0x48869164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48869164>); // 12.42% + m_dsmap.SetAt(0x48879164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48879164>); // 8.40% // gradius 5 - m_dsmap.SetAt(0x4881814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881814c>); // 22.73% - m_dsmap.SetAt(0x4885814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885814c>); // 21.84% - m_dsmap.SetAt(0x48868968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868968>); // 21.44% - m_dsmap.SetAt(0x48878968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878968>); // 7.33% - m_dsmap.SetAt(0x49004968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004968>); // 2.44% - m_dsmap.SetAt(0x49068168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068168>); // 37.23% - m_dsmap.SetAt(0x49068968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068968>); // 4.96% - m_dsmap.SetAt(0x49078168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078168>); // 5.55% - m_dsmap.SetAt(0x49078968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078968>); // 4.92% - m_dsmap.SetAt(0x5fe3814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe3814c>); // 22.69% - m_dsmap.SetAt(0x5fe68168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe68168>); // 31.44% - m_dsmap.SetAt(0x5fe68968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe68968>); // 6.92% - m_dsmap.SetAt(0x5fee8168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fee8168>); // 3.37% - m_dsmap.SetAt(0x5fee8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fee8968>); // 47.48% - m_dsmap.SetAt(0x5ffe8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5ffe8968>); // 6.57% + m_dsmap.SetAt(0x4881814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4881814c>); // 22.73% + m_dsmap.SetAt(0x4885814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4885814c>); // 21.84% + m_dsmap.SetAt(0x48868968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868968>); // 21.44% + m_dsmap.SetAt(0x48878968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878968>); // 7.33% + m_dsmap.SetAt(0x49004968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004968>); // 2.44% + m_dsmap.SetAt(0x49068168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068168>); // 37.23% + m_dsmap.SetAt(0x49068968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068968>); // 4.96% + m_dsmap.SetAt(0x49078168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078168>); // 5.55% + m_dsmap.SetAt(0x49078968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078968>); // 4.92% + m_dsmap.SetAt(0x5fe3814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe3814c>); // 22.69% + m_dsmap.SetAt(0x5fe68168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe68168>); // 31.44% + m_dsmap.SetAt(0x5fe68968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe68968>); // 6.92% + m_dsmap.SetAt(0x5fee8168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fee8168>); // 3.37% + m_dsmap.SetAt(0x5fee8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fee8968>); // 47.48% + m_dsmap.SetAt(0x5ffe8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5ffe8968>); // 6.57% // tales of abyss - m_dsmap.SetAt(0x1fe04068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04068>); // 9.99% - m_dsmap.SetAt(0x1fe390cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe390cc>); // 3.89% - m_dsmap.SetAt(0x1fe3934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3934c>); // 2.45% - m_dsmap.SetAt(0x1fe39368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe39368>); // 8.12% - m_dsmap.SetAt(0x41200b4c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x41200b4c>); // 17.03% - m_dsmap.SetAt(0x4121034c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4121034c>); // 27.27% - m_dsmap.SetAt(0x41210b4c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x41210b4c>); // 15.56% - m_dsmap.SetAt(0x48848b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48848b68>); // 4.27% - m_dsmap.SetAt(0x4885834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885834c>); // 15.82% - m_dsmap.SetAt(0x48858368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48858368>); // 3.02% - m_dsmap.SetAt(0x4886834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886834c>); // 4.93% - m_dsmap.SetAt(0x48868368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868368>); // 12.08% - m_dsmap.SetAt(0x48868b4c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868b4c>); // 4.99% - m_dsmap.SetAt(0x4886934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886934c>); // 6.19% - m_dsmap.SetAt(0x4887834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887834c>); // 8.58% - m_dsmap.SetAt(0x4887934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887934c>); // 5.71% - m_dsmap.SetAt(0x488c8368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488c8368>); // 2.61% - m_dsmap.SetAt(0x488c8b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488c8b68>); // 21.36% - m_dsmap.SetAt(0x48cf89e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48cf89e8>); // 53.45% - m_dsmap.SetAt(0x4903834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4903834c>); // 20.14% - m_dsmap.SetAt(0x4906834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4906834c>); // 10.33% - m_dsmap.SetAt(0x49068368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068368>); // 7.60% - m_dsmap.SetAt(0x49068b4c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068b4c>); // 14.29% - m_dsmap.SetAt(0x490c8b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490c8b68>); // 5.78% - m_dsmap.SetAt(0x490e8b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8b68>); // 4.01% - m_dsmap.SetAt(0x490f89e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490f89e8>); // 56.65% - m_dsmap.SetAt(0x4a83904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a83904c>); // 32.12% - m_dsmap.SetAt(0x4d03914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d03914c>); // 18.80% - m_dsmap.SetAt(0x5fe59078, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe59078>); // 23.76% + m_dsmap.SetAt(0x1fe04068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04068>); // 9.99% + m_dsmap.SetAt(0x1fe390cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe390cc>); // 3.89% + m_dsmap.SetAt(0x1fe3934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe3934c>); // 2.45% + m_dsmap.SetAt(0x1fe39368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe39368>); // 8.12% + m_dsmap.SetAt(0x41200b4c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x41200b4c>); // 17.03% + m_dsmap.SetAt(0x4121034c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4121034c>); // 27.27% + m_dsmap.SetAt(0x41210b4c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x41210b4c>); // 15.56% + m_dsmap.SetAt(0x48848b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48848b68>); // 4.27% + m_dsmap.SetAt(0x4885834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4885834c>); // 15.82% + m_dsmap.SetAt(0x48858368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48858368>); // 3.02% + m_dsmap.SetAt(0x4886834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4886834c>); // 4.93% + m_dsmap.SetAt(0x48868368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868368>); // 12.08% + m_dsmap.SetAt(0x48868b4c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868b4c>); // 4.99% + m_dsmap.SetAt(0x4886934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4886934c>); // 6.19% + m_dsmap.SetAt(0x4887834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887834c>); // 8.58% + m_dsmap.SetAt(0x4887934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887934c>); // 5.71% + m_dsmap.SetAt(0x488c8368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488c8368>); // 2.61% + m_dsmap.SetAt(0x488c8b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488c8b68>); // 21.36% + m_dsmap.SetAt(0x48cf89e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48cf89e8>); // 53.45% + m_dsmap.SetAt(0x4903834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4903834c>); // 20.14% + m_dsmap.SetAt(0x4906834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4906834c>); // 10.33% + m_dsmap.SetAt(0x49068368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068368>); // 7.60% + m_dsmap.SetAt(0x49068b4c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068b4c>); // 14.29% + m_dsmap.SetAt(0x490c8b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490c8b68>); // 5.78% + m_dsmap.SetAt(0x490e8b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e8b68>); // 4.01% + m_dsmap.SetAt(0x490f89e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490f89e8>); // 56.65% + m_dsmap.SetAt(0x4a83904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4a83904c>); // 32.12% + m_dsmap.SetAt(0x4d03914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d03914c>); // 18.80% + m_dsmap.SetAt(0x5fe59078, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe59078>); // 23.76% // Gundam Seed Destiny OMNI VS ZAFT II PLUS - m_dsmap.SetAt(0x1fe04255, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04255>); // 3.77% - m_dsmap.SetAt(0x1fe19375, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe19375>); // 18.91% - m_dsmap.SetAt(0x1fe68375, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68375>); // 31.83% - m_dsmap.SetAt(0x1fee8b75, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8b75>); // 20.67% - m_dsmap.SetAt(0x48818375, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48818375>); // 33.45% - m_dsmap.SetAt(0x48819375, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48819375>); // 22.73% - m_dsmap.SetAt(0x4886884d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886884d>); // 2.10% - m_dsmap.SetAt(0x48868b75, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868b75>); // 23.40% - m_dsmap.SetAt(0x48878375, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878375>); // 16.21% - m_dsmap.SetAt(0x4887884d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887884d>); // 16.31% - m_dsmap.SetAt(0x48878b75, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878b75>); // 35.41% - m_dsmap.SetAt(0x488e8375, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8375>); // 41.70% - m_dsmap.SetAt(0x488e8b75, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8b75>); // 61.10% - m_dsmap.SetAt(0x488e9375, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e9375>); // 2.06% - m_dsmap.SetAt(0x49068375, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068375>); // 34.32% - m_dsmap.SetAt(0x4906884d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4906884d>); // 6.31% - m_dsmap.SetAt(0x490e8375, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8375>); // 25.96% - m_dsmap.SetAt(0x490e8b75, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8b75>); // 9.70% + m_dsmap.SetAt(0x1fe04255, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04255>); // 3.77% + m_dsmap.SetAt(0x1fe19375, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe19375>); // 18.91% + m_dsmap.SetAt(0x1fe68375, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe68375>); // 31.83% + m_dsmap.SetAt(0x1fee8b75, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee8b75>); // 20.67% + m_dsmap.SetAt(0x48818375, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48818375>); // 33.45% + m_dsmap.SetAt(0x48819375, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48819375>); // 22.73% + m_dsmap.SetAt(0x4886884d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4886884d>); // 2.10% + m_dsmap.SetAt(0x48868b75, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868b75>); // 23.40% + m_dsmap.SetAt(0x48878375, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878375>); // 16.21% + m_dsmap.SetAt(0x4887884d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887884d>); // 16.31% + m_dsmap.SetAt(0x48878b75, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878b75>); // 35.41% + m_dsmap.SetAt(0x488e8375, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8375>); // 41.70% + m_dsmap.SetAt(0x488e8b75, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8b75>); // 61.10% + m_dsmap.SetAt(0x488e9375, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e9375>); // 2.06% + m_dsmap.SetAt(0x49068375, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068375>); // 34.32% + m_dsmap.SetAt(0x4906884d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4906884d>); // 6.31% + m_dsmap.SetAt(0x490e8375, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e8375>); // 25.96% + m_dsmap.SetAt(0x490e8b75, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e8b75>); // 9.70% // nba 2k8 - m_dsmap.SetAt(0x1fe04856, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04856>); // 43.04% - m_dsmap.SetAt(0x1fe38966, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe38966>); // 27.76% - m_dsmap.SetAt(0x1fe39156, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe39156>); // 27.86% - m_dsmap.SetAt(0x1fe60966, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe60966>); // 6.48% - m_dsmap.SetAt(0x1fe68966, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68966>); // 7.65% - m_dsmap.SetAt(0x1fe79156, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe79156>); // 31.61% - m_dsmap.SetAt(0x4883804e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883804e>); // 26.11% - m_dsmap.SetAt(0x48838166, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48838166>); // 7.20% - m_dsmap.SetAt(0x48868166, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868166>); // 16.60% - m_dsmap.SetAt(0x48868966, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868966>); // 55.21% - m_dsmap.SetAt(0x48878166, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878166>); // 3.20% - m_dsmap.SetAt(0x48879166, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879166>); // 17.34% - m_dsmap.SetAt(0x49028966, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49028966>); // 6.79% - m_dsmap.SetAt(0x5fe69166, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe69166>); // 13.11% - m_dsmap.SetAt(0x5fe79166, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe79166>); // 30.25% - m_dsmap.SetAt(0x1fe28956, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe28956>); // 27.21% - m_dsmap.SetAt(0x48828966, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48828966>); // 8.93% - m_dsmap.SetAt(0x5fe28966, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe28966>); // 2.79% - m_dsmap.SetAt(0x5fe68166, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe68166>); // 2.34% - m_dsmap.SetAt(0x5fe68966, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe68966>); // 2.29% + m_dsmap.SetAt(0x1fe04856, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04856>); // 43.04% + m_dsmap.SetAt(0x1fe38966, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe38966>); // 27.76% + m_dsmap.SetAt(0x1fe39156, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe39156>); // 27.86% + m_dsmap.SetAt(0x1fe60966, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe60966>); // 6.48% + m_dsmap.SetAt(0x1fe68966, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe68966>); // 7.65% + m_dsmap.SetAt(0x1fe79156, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe79156>); // 31.61% + m_dsmap.SetAt(0x4883804e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4883804e>); // 26.11% + m_dsmap.SetAt(0x48838166, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48838166>); // 7.20% + m_dsmap.SetAt(0x48868166, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868166>); // 16.60% + m_dsmap.SetAt(0x48868966, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868966>); // 55.21% + m_dsmap.SetAt(0x48878166, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878166>); // 3.20% + m_dsmap.SetAt(0x48879166, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48879166>); // 17.34% + m_dsmap.SetAt(0x49028966, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49028966>); // 6.79% + m_dsmap.SetAt(0x5fe69166, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe69166>); // 13.11% + m_dsmap.SetAt(0x5fe79166, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe79166>); // 30.25% + m_dsmap.SetAt(0x1fe28956, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe28956>); // 27.21% + m_dsmap.SetAt(0x48828966, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48828966>); // 8.93% + m_dsmap.SetAt(0x5fe28966, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe28966>); // 2.79% + m_dsmap.SetAt(0x5fe68166, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe68166>); // 2.34% + m_dsmap.SetAt(0x5fe68966, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe68966>); // 2.29% // onimusha 3 - m_dsmap.SetAt(0x1fe18068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe18068>); // 6.42% - m_dsmap.SetAt(0x1fe1904e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe1904e>); // 3.02% - m_dsmap.SetAt(0x1fe3904e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3904e>); // 5.35% - m_dsmap.SetAt(0x1fee014c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee014c>); // 4.64% - m_dsmap.SetAt(0x1fee0b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee0b68>); // 41.49% - m_dsmap.SetAt(0x1fee814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee814c>); // 2.13% - m_dsmap.SetAt(0x48268368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48268368>); // 3.69% - m_dsmap.SetAt(0x48839168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48839168>); // 7.67% - m_dsmap.SetAt(0x48c28368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48c28368>); // 6.75% - m_dsmap.SetAt(0x4903884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4903884c>); // 34.63% - m_dsmap.SetAt(0x49078368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078368>); // 2.76% - m_dsmap.SetAt(0x49278368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49278368>); // 3.22% - m_dsmap.SetAt(0x4c804168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c804168>); // 6.85% - m_dsmap.SetAt(0x4c804368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c804368>); // 5.05% - m_dsmap.SetAt(0x4c878168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c878168>); // 13.59% - m_dsmap.SetAt(0x4d004068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d004068>); // 33.75% - m_dsmap.SetAt(0x4d03804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d03804c>); // 9.48% - m_dsmap.SetAt(0x4d03904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d03904c>); // 10.16% - m_dsmap.SetAt(0x4d05884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d05884c>); // 7.73% - m_dsmap.SetAt(0x5125904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5125904c>); // 6.73% - m_dsmap.SetAt(0x5425904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5425904c>); // 7.59% - m_dsmap.SetAt(0x5fe04078, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe04078>); // 32.30% - m_dsmap.SetAt(0x5fe5904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe5904c>); // 6.22% - m_dsmap.SetAt(0x5fe78368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe78368>); // 5.59% - m_dsmap.SetAt(0x5fe7904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe7904c>); // 9.38% - m_dsmap.SetAt(0x5fe79368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe79368>); // 11.34% - m_dsmap.SetAt(0x5ff0404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5ff0404c>); // 2.92% - m_dsmap.SetAt(0x5ff1804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5ff1804c>); // 4.63% + m_dsmap.SetAt(0x1fe18068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe18068>); // 6.42% + m_dsmap.SetAt(0x1fe1904e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe1904e>); // 3.02% + m_dsmap.SetAt(0x1fe3904e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe3904e>); // 5.35% + m_dsmap.SetAt(0x1fee014c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee014c>); // 4.64% + m_dsmap.SetAt(0x1fee0b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee0b68>); // 41.49% + m_dsmap.SetAt(0x1fee814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee814c>); // 2.13% + m_dsmap.SetAt(0x48268368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48268368>); // 3.69% + m_dsmap.SetAt(0x48839168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48839168>); // 7.67% + m_dsmap.SetAt(0x48c28368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48c28368>); // 6.75% + m_dsmap.SetAt(0x4903884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4903884c>); // 34.63% + m_dsmap.SetAt(0x49078368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078368>); // 2.76% + m_dsmap.SetAt(0x49278368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49278368>); // 3.22% + m_dsmap.SetAt(0x4c804168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c804168>); // 6.85% + m_dsmap.SetAt(0x4c804368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c804368>); // 5.05% + m_dsmap.SetAt(0x4c878168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c878168>); // 13.59% + m_dsmap.SetAt(0x4d004068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d004068>); // 33.75% + m_dsmap.SetAt(0x4d03804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d03804c>); // 9.48% + m_dsmap.SetAt(0x4d03904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d03904c>); // 10.16% + m_dsmap.SetAt(0x4d05884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d05884c>); // 7.73% + m_dsmap.SetAt(0x5125904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5125904c>); // 6.73% + m_dsmap.SetAt(0x5425904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5425904c>); // 7.59% + m_dsmap.SetAt(0x5fe04078, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe04078>); // 32.30% + m_dsmap.SetAt(0x5fe5904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe5904c>); // 6.22% + m_dsmap.SetAt(0x5fe78368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe78368>); // 5.59% + m_dsmap.SetAt(0x5fe7904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe7904c>); // 9.38% + m_dsmap.SetAt(0x5fe79368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe79368>); // 11.34% + m_dsmap.SetAt(0x5ff0404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5ff0404c>); // 2.92% + m_dsmap.SetAt(0x5ff1804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5ff1804c>); // 4.63% // resident evil code veronica - m_dsmap.SetAt(0x1fe04968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04968>); // 3.22% - m_dsmap.SetAt(0x1fe31068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe31068>); // 23.55% - m_dsmap.SetAt(0x1fe78168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe78168>); // 29.94% - m_dsmap.SetAt(0x1fee8168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8168>); // 10.74% - m_dsmap.SetAt(0x1fee8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8968>); // 81.32% - m_dsmap.SetAt(0x48878368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878368>); // 26.64% - m_dsmap.SetAt(0x48878b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878b68>); // 5.40% - m_dsmap.SetAt(0x488e88e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e88e8>); // 2.16% - m_dsmap.SetAt(0x488e8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8968>); // 4.17% - m_dsmap.SetAt(0x488f9368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f9368>); // 5.06% - m_dsmap.SetAt(0x4c818058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c818058>); // 25.60% - m_dsmap.SetAt(0x4c819058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c819058>); // 23.11% + m_dsmap.SetAt(0x1fe04968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04968>); // 3.22% + m_dsmap.SetAt(0x1fe31068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe31068>); // 23.55% + m_dsmap.SetAt(0x1fe78168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe78168>); // 29.94% + m_dsmap.SetAt(0x1fee8168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee8168>); // 10.74% + m_dsmap.SetAt(0x1fee8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee8968>); // 81.32% + m_dsmap.SetAt(0x48878368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878368>); // 26.64% + m_dsmap.SetAt(0x48878b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878b68>); // 5.40% + m_dsmap.SetAt(0x488e88e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e88e8>); // 2.16% + m_dsmap.SetAt(0x488e8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8968>); // 4.17% + m_dsmap.SetAt(0x488f9368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488f9368>); // 5.06% + m_dsmap.SetAt(0x4c818058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c818058>); // 25.60% + m_dsmap.SetAt(0x4c819058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c819058>); // 23.11% // armored core 3 - m_dsmap.SetAt(0x1fe0404e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe0404e>); // 2.34% - m_dsmap.SetAt(0x1fe04074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04074>); // 9.77% - m_dsmap.SetAt(0x1fe041cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe041cc>); // 9.45% - m_dsmap.SetAt(0x1fe841f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe841f4>); // 4.54% - m_dsmap.SetAt(0x1fee01f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee01f4>); // 2.94% - m_dsmap.SetAt(0x1fee09f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee09f4>); // 53.50% - m_dsmap.SetAt(0x1fee89f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee89f4>); // 3.51% - m_dsmap.SetAt(0x4840404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4840404c>); // 5.70% - m_dsmap.SetAt(0x48404054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48404054>); // 8.32% - m_dsmap.SetAt(0x484049d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x484049d4>); // 6.21% - m_dsmap.SetAt(0x484e81f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x484e81f4>); // 12.40% - m_dsmap.SetAt(0x488501d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488501d4>); // 8.67% - m_dsmap.SetAt(0x488581d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488581d4>); // 6.37% - m_dsmap.SetAt(0x488591d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488591d4>); // 2.45% - m_dsmap.SetAt(0x48868874, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868874>); // 13.58% - m_dsmap.SetAt(0x48868b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868b64>); // 3.30% - m_dsmap.SetAt(0x48878074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878074>); // 8.21% - m_dsmap.SetAt(0x48878874, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878874>); // 13.60% - m_dsmap.SetAt(0x488791d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488791d4>); // 3.68% - m_dsmap.SetAt(0x488e09f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e09f4>); // 12.28% - m_dsmap.SetAt(0x488e81f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e81f4>); // 18.73% - m_dsmap.SetAt(0x488e89f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e89f4>); // 4.59% - m_dsmap.SetAt(0x490591d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490591d4>); // 3.76% - m_dsmap.SetAt(0x49078074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078074>); // 2.83% - m_dsmap.SetAt(0x49078874, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078874>); // 2.73% - m_dsmap.SetAt(0x490e81f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e81f4>); // 57.03% - m_dsmap.SetAt(0x4c429064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c429064>); // 37.51% - m_dsmap.SetAt(0x4c4e81f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c4e81f4>); // 8.97% - m_dsmap.SetAt(0x4c4e89f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c4e89f4>); // 8.70% - m_dsmap.SetAt(0x4d0b00e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d0b00e4>); // 3.44% - m_dsmap.SetAt(0x4d0b08e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d0b08e4>); // 5.86% - m_dsmap.SetAt(0x4d0e81f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d0e81f4>); // 7.54% - m_dsmap.SetAt(0x510e89f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x510e89f4>); // 2.80% + m_dsmap.SetAt(0x1fe0404e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe0404e>); // 2.34% + m_dsmap.SetAt(0x1fe04074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04074>); // 9.77% + m_dsmap.SetAt(0x1fe041cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe041cc>); // 9.45% + m_dsmap.SetAt(0x1fe841f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe841f4>); // 4.54% + m_dsmap.SetAt(0x1fee01f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee01f4>); // 2.94% + m_dsmap.SetAt(0x1fee09f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee09f4>); // 53.50% + m_dsmap.SetAt(0x1fee89f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee89f4>); // 3.51% + m_dsmap.SetAt(0x4840404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4840404c>); // 5.70% + m_dsmap.SetAt(0x48404054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48404054>); // 8.32% + m_dsmap.SetAt(0x484049d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x484049d4>); // 6.21% + m_dsmap.SetAt(0x484e81f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x484e81f4>); // 12.40% + m_dsmap.SetAt(0x488501d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488501d4>); // 8.67% + m_dsmap.SetAt(0x488581d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488581d4>); // 6.37% + m_dsmap.SetAt(0x488591d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488591d4>); // 2.45% + m_dsmap.SetAt(0x48868874, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868874>); // 13.58% + m_dsmap.SetAt(0x48868b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868b64>); // 3.30% + m_dsmap.SetAt(0x48878074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878074>); // 8.21% + m_dsmap.SetAt(0x48878874, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878874>); // 13.60% + m_dsmap.SetAt(0x488791d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488791d4>); // 3.68% + m_dsmap.SetAt(0x488e09f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e09f4>); // 12.28% + m_dsmap.SetAt(0x488e81f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e81f4>); // 18.73% + m_dsmap.SetAt(0x488e89f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e89f4>); // 4.59% + m_dsmap.SetAt(0x490591d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490591d4>); // 3.76% + m_dsmap.SetAt(0x49078074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078074>); // 2.83% + m_dsmap.SetAt(0x49078874, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49078874>); // 2.73% + m_dsmap.SetAt(0x490e81f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e81f4>); // 57.03% + m_dsmap.SetAt(0x4c429064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c429064>); // 37.51% + m_dsmap.SetAt(0x4c4e81f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c4e81f4>); // 8.97% + m_dsmap.SetAt(0x4c4e89f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c4e89f4>); // 8.70% + m_dsmap.SetAt(0x4d0b00e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d0b00e4>); // 3.44% + m_dsmap.SetAt(0x4d0b08e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d0b08e4>); // 5.86% + m_dsmap.SetAt(0x4d0e81f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d0e81f4>); // 7.54% + m_dsmap.SetAt(0x510e89f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x510e89f4>); // 2.80% // aerial planet - m_dsmap.SetAt(0x4820404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4820404c>); // 12.56% - m_dsmap.SetAt(0x4847914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4847914c>); // 5.94% - m_dsmap.SetAt(0x4886894c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886894c>); // 34.16% - m_dsmap.SetAt(0x48878974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878974>); // 11.98% - m_dsmap.SetAt(0x488e814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e814c>); // 4.01% - m_dsmap.SetAt(0x488e894c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e894c>); // 4.17% - m_dsmap.SetAt(0x4c804064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c804064>); // 45.01% - m_dsmap.SetAt(0x4c80414c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c80414c>); // 12.32% - m_dsmap.SetAt(0x4c86804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c86804c>); // 28.43% - m_dsmap.SetAt(0x4c8681f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8681f4>); // 41.12% - m_dsmap.SetAt(0x4c8e804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8e804c>); // 15.77% - m_dsmap.SetAt(0x4c8e8174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8e8174>); // 5.75% - m_dsmap.SetAt(0x4c8e81f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8e81f4>); // 10.36% - m_dsmap.SetAt(0x4c8e8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8e8964>); // 3.19% - m_dsmap.SetAt(0x4c8e8974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8e8974>); // 32.28% - m_dsmap.SetAt(0x4c93814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c93814c>); // 26.21% - m_dsmap.SetAt(0x4cc0414c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4cc0414c>); // 13.24% - m_dsmap.SetAt(0x4d068174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068174>); // 10.90% - m_dsmap.SetAt(0x4d10404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d10404c>); // 10.01% - m_dsmap.SetAt(0x4d404054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d404054>); // 4.44% + m_dsmap.SetAt(0x4820404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4820404c>); // 12.56% + m_dsmap.SetAt(0x4847914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4847914c>); // 5.94% + m_dsmap.SetAt(0x4886894c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4886894c>); // 34.16% + m_dsmap.SetAt(0x48878974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878974>); // 11.98% + m_dsmap.SetAt(0x488e814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e814c>); // 4.01% + m_dsmap.SetAt(0x488e894c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e894c>); // 4.17% + m_dsmap.SetAt(0x4c804064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c804064>); // 45.01% + m_dsmap.SetAt(0x4c80414c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c80414c>); // 12.32% + m_dsmap.SetAt(0x4c86804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c86804c>); // 28.43% + m_dsmap.SetAt(0x4c8681f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c8681f4>); // 41.12% + m_dsmap.SetAt(0x4c8e804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c8e804c>); // 15.77% + m_dsmap.SetAt(0x4c8e8174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c8e8174>); // 5.75% + m_dsmap.SetAt(0x4c8e81f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c8e81f4>); // 10.36% + m_dsmap.SetAt(0x4c8e8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c8e8964>); // 3.19% + m_dsmap.SetAt(0x4c8e8974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c8e8974>); // 32.28% + m_dsmap.SetAt(0x4c93814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c93814c>); // 26.21% + m_dsmap.SetAt(0x4cc0414c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4cc0414c>); // 13.24% + m_dsmap.SetAt(0x4d068174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d068174>); // 10.90% + m_dsmap.SetAt(0x4d10404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d10404c>); // 10.01% + m_dsmap.SetAt(0x4d404054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d404054>); // 4.44% // one piece grand battle 3 - m_dsmap.SetAt(0x48839054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48839054>); // 27.20% - m_dsmap.SetAt(0x4886914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886914c>); // 3.97% - m_dsmap.SetAt(0x49068874, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068874>); // 28.98% - m_dsmap.SetAt(0x49069174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49069174>); // 2.54% - m_dsmap.SetAt(0x4ac0404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4ac0404c>); // 9.02% - m_dsmap.SetAt(0x4c41904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c41904c>); // 12.41% - m_dsmap.SetAt(0x4c4190cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c4190cc>); // 7.08% - m_dsmap.SetAt(0x5321914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5321914c>); // 7.12% - m_dsmap.SetAt(0x5fe79054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe79054>); // 2.17% + m_dsmap.SetAt(0x48839054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48839054>); // 27.20% + m_dsmap.SetAt(0x4886914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4886914c>); // 3.97% + m_dsmap.SetAt(0x49068874, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068874>); // 28.98% + m_dsmap.SetAt(0x49069174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49069174>); // 2.54% + m_dsmap.SetAt(0x4ac0404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4ac0404c>); // 9.02% + m_dsmap.SetAt(0x4c41904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c41904c>); // 12.41% + m_dsmap.SetAt(0x4c4190cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c4190cc>); // 7.08% + m_dsmap.SetAt(0x5321914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5321914c>); // 7.12% + m_dsmap.SetAt(0x5fe79054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe79054>); // 2.17% // one piece grand adventure - m_dsmap.SetAt(0x1fe0414c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe0414c>); // 2.25% - m_dsmap.SetAt(0x1fe68064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68064>); // 7.07% - m_dsmap.SetAt(0x4421814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4421814c>); // 8.39% - m_dsmap.SetAt(0x4843b04c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4843b04c>); // 19.21% - m_dsmap.SetAt(0x4881104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881104c>); // 15.21% - m_dsmap.SetAt(0x4881184c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881184c>); // 14.82% - m_dsmap.SetAt(0x48849164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48849164>); // 24.94% - m_dsmap.SetAt(0x48869154, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48869154>); // 4.70% - m_dsmap.SetAt(0x48878154, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878154>); // 8.39% - m_dsmap.SetAt(0x48879154, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879154>); // 6.80% + m_dsmap.SetAt(0x1fe0414c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe0414c>); // 2.25% + m_dsmap.SetAt(0x1fe68064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe68064>); // 7.07% + m_dsmap.SetAt(0x4421814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4421814c>); // 8.39% + m_dsmap.SetAt(0x4843b04c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4843b04c>); // 19.21% + m_dsmap.SetAt(0x4881104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4881104c>); // 15.21% + m_dsmap.SetAt(0x4881184c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4881184c>); // 14.82% + m_dsmap.SetAt(0x48849164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48849164>); // 24.94% + m_dsmap.SetAt(0x48869154, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48869154>); // 4.70% + m_dsmap.SetAt(0x48878154, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878154>); // 8.39% + m_dsmap.SetAt(0x48879154, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48879154>); // 6.80% // shadow hearts - m_dsmap.SetAt(0x1fe6904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe6904c>); // 5.24% - m_dsmap.SetAt(0x48459058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48459058>); // 3.35% - m_dsmap.SetAt(0x4847804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4847804c>); // 5.60% - m_dsmap.SetAt(0x48479068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48479068>); // 21.30% - m_dsmap.SetAt(0x4881104e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881104e>); // 5.30% - m_dsmap.SetAt(0x48819168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48819168>); // 15.55% - m_dsmap.SetAt(0x48830058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48830058>); // 14.83% - m_dsmap.SetAt(0x4883104e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883104e>); // 3.58% - m_dsmap.SetAt(0x48831058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48831058>); // 14.24% - m_dsmap.SetAt(0x48858058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48858058>); // 2.27% - m_dsmap.SetAt(0x48868768, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868768>); // 6.35% - m_dsmap.SetAt(0x48868778, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868778>); // 15.38% - m_dsmap.SetAt(0x48868f78, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868f78>); // 4.91% - m_dsmap.SetAt(0x49004858, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004858>); // 8.72% - m_dsmap.SetAt(0x4903004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4903004d>); // 5.28% - m_dsmap.SetAt(0x49030058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49030058>); // 48.66% - m_dsmap.SetAt(0x49031058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49031058>); // 13.93% - m_dsmap.SetAt(0x49068f68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068f68>); // 5.56% - m_dsmap.SetAt(0x4c830078, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c830078>); // 2.49% - m_dsmap.SetAt(0x4c870878, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c870878>); // 9.09% + m_dsmap.SetAt(0x1fe6904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe6904c>); // 5.24% + m_dsmap.SetAt(0x48459058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48459058>); // 3.35% + m_dsmap.SetAt(0x4847804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4847804c>); // 5.60% + m_dsmap.SetAt(0x48479068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48479068>); // 21.30% + m_dsmap.SetAt(0x4881104e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4881104e>); // 5.30% + m_dsmap.SetAt(0x48819168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48819168>); // 15.55% + m_dsmap.SetAt(0x48830058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48830058>); // 14.83% + m_dsmap.SetAt(0x4883104e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4883104e>); // 3.58% + m_dsmap.SetAt(0x48831058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48831058>); // 14.24% + m_dsmap.SetAt(0x48858058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48858058>); // 2.27% + m_dsmap.SetAt(0x48868768, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868768>); // 6.35% + m_dsmap.SetAt(0x48868778, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868778>); // 15.38% + m_dsmap.SetAt(0x48868f78, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868f78>); // 4.91% + m_dsmap.SetAt(0x49004858, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004858>); // 8.72% + m_dsmap.SetAt(0x4903004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4903004d>); // 5.28% + m_dsmap.SetAt(0x49030058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49030058>); // 48.66% + m_dsmap.SetAt(0x49031058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49031058>); // 13.93% + m_dsmap.SetAt(0x49068f68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068f68>); // 5.56% + m_dsmap.SetAt(0x4c830078, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c830078>); // 2.49% + m_dsmap.SetAt(0x4c870878, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c870878>); // 9.09% // the punisher - m_dsmap.SetAt(0x48420f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48420f64>); // 11.13% - m_dsmap.SetAt(0x48468f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48468f64>); // 10.99% - m_dsmap.SetAt(0x4880474c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4880474c>); // 17.06% - m_dsmap.SetAt(0x4880474e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4880474e>); // 2.16% - m_dsmap.SetAt(0x4883874c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883874c>); // 3.61% - m_dsmap.SetAt(0x4883974c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883974c>); // 7.07% - m_dsmap.SetAt(0x4885874c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885874c>); // 3.78% - m_dsmap.SetAt(0x48868764, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868764>); // 7.42% - m_dsmap.SetAt(0x48868f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868f64>); // 74.53% - m_dsmap.SetAt(0x4886b764, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886b764>); // 4.61% - m_dsmap.SetAt(0x4886bf64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886bf64>); // 24.46% - m_dsmap.SetAt(0x4887874c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887874c>); // 6.85% - m_dsmap.SetAt(0x4906874c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4906874c>); // 2.84% - m_dsmap.SetAt(0x49068764, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068764>); // 5.77% - m_dsmap.SetAt(0x49068f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068f64>); // 6.21% - m_dsmap.SetAt(0x4906974c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4906974c>); // 15.63% - m_dsmap.SetAt(0x4d00474c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d00474c>); // 13.53% - m_dsmap.SetAt(0x4d068764, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068764>); // 2.83% - m_dsmap.SetAt(0x4d068f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068f64>); // 13.52% - m_dsmap.SetAt(0x5fe0474e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe0474e>); // 5.68% - m_dsmap.SetAt(0x5fe3974c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe3974c>); // 21.28% - m_dsmap.SetAt(0x5fe68f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe68f64>); // 93.35% - m_dsmap.SetAt(0x5fe6af64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe6af64>); // 2.11% + m_dsmap.SetAt(0x48420f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48420f64>); // 11.13% + m_dsmap.SetAt(0x48468f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48468f64>); // 10.99% + m_dsmap.SetAt(0x4880474c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4880474c>); // 17.06% + m_dsmap.SetAt(0x4880474e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4880474e>); // 2.16% + m_dsmap.SetAt(0x4883874c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4883874c>); // 3.61% + m_dsmap.SetAt(0x4883974c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4883974c>); // 7.07% + m_dsmap.SetAt(0x4885874c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4885874c>); // 3.78% + m_dsmap.SetAt(0x48868764, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868764>); // 7.42% + m_dsmap.SetAt(0x48868f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868f64>); // 74.53% + m_dsmap.SetAt(0x4886b764, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4886b764>); // 4.61% + m_dsmap.SetAt(0x4886bf64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4886bf64>); // 24.46% + m_dsmap.SetAt(0x4887874c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887874c>); // 6.85% + m_dsmap.SetAt(0x4906874c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4906874c>); // 2.84% + m_dsmap.SetAt(0x49068764, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068764>); // 5.77% + m_dsmap.SetAt(0x49068f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068f64>); // 6.21% + m_dsmap.SetAt(0x4906974c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4906974c>); // 15.63% + m_dsmap.SetAt(0x4d00474c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d00474c>); // 13.53% + m_dsmap.SetAt(0x4d068764, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d068764>); // 2.83% + m_dsmap.SetAt(0x4d068f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d068f64>); // 13.52% + m_dsmap.SetAt(0x5fe0474e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe0474e>); // 5.68% + m_dsmap.SetAt(0x5fe3974c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe3974c>); // 21.28% + m_dsmap.SetAt(0x5fe68f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe68f64>); // 93.35% + m_dsmap.SetAt(0x5fe6af64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe6af64>); // 2.11% // guitar hero - m_dsmap.SetAt(0x1fe3106a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3106a>); // 10.62% - m_dsmap.SetAt(0x1fe3905a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3905a>); // 4.12% - m_dsmap.SetAt(0x1fe6887a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe6887a>); // 9.12% - m_dsmap.SetAt(0x48804d4e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804d4e>); // 28.75% - m_dsmap.SetAt(0x48804d6a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804d6a>); // 4.04% - m_dsmap.SetAt(0x48804d7a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804d7a>); // 15.30% - m_dsmap.SetAt(0x4886815a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886815a>); // 2.33% - m_dsmap.SetAt(0x4886854e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886854e>); // 8.02% - m_dsmap.SetAt(0x4886857a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886857a>); // 4.70% - m_dsmap.SetAt(0x48868d5a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868d5a>); // 5.95% - m_dsmap.SetAt(0x48868d6a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868d6a>); // 8.10% - m_dsmap.SetAt(0x48868d7a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868d7a>); // 46.88% - m_dsmap.SetAt(0x4886957a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886957a>); // 2.24% - m_dsmap.SetAt(0x4887854e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887854e>); // 8.47% - m_dsmap.SetAt(0x4887857a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887857a>); // 26.93% - m_dsmap.SetAt(0x48878d4e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878d4e>); // 3.63% - m_dsmap.SetAt(0x48878d7a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878d7a>); // 29.77% - m_dsmap.SetAt(0x4887917a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887917a>); // 24.09% - m_dsmap.SetAt(0x4887954e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887954e>); // 11.46% - m_dsmap.SetAt(0x4887957a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887957a>); // 27.16% - m_dsmap.SetAt(0x48884d7a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884d7a>); // 8.23% - m_dsmap.SetAt(0x488a917a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488a917a>); // 19.80% - m_dsmap.SetAt(0x488e8d6a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8d6a>); // 4.32% - m_dsmap.SetAt(0x488e8d7a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8d7a>); // 60.16% - m_dsmap.SetAt(0x4906806a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4906806a>); // 25.96% - m_dsmap.SetAt(0x4906886a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4906886a>); // 5.88% - m_dsmap.SetAt(0x4907804e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907804e>); // 3.48% - m_dsmap.SetAt(0x4d03204e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d03204e>); // 64.22% - m_dsmap.SetAt(0x4d06986a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d06986a>); // 3.72% - m_dsmap.SetAt(0x4d06a06a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d06a06a>); // 19.99% - m_dsmap.SetAt(0x4d06a86a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d06a86a>); // 12.55% - m_dsmap.SetAt(0x4d07806a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d07806a>); // 7.69% - m_dsmap.SetAt(0x4d0ea06a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d0ea06a>); // 3.71% - m_dsmap.SetAt(0x4d0ea86a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d0ea86a>); // 5.03% - m_dsmap.SetAt(0x5503204e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5503204e>); // 21.69% + m_dsmap.SetAt(0x1fe3106a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe3106a>); // 10.62% + m_dsmap.SetAt(0x1fe3905a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe3905a>); // 4.12% + m_dsmap.SetAt(0x1fe6887a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe6887a>); // 9.12% + m_dsmap.SetAt(0x48804d4e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804d4e>); // 28.75% + m_dsmap.SetAt(0x48804d6a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804d6a>); // 4.04% + m_dsmap.SetAt(0x48804d7a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804d7a>); // 15.30% + m_dsmap.SetAt(0x4886815a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4886815a>); // 2.33% + m_dsmap.SetAt(0x4886854e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4886854e>); // 8.02% + m_dsmap.SetAt(0x4886857a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4886857a>); // 4.70% + m_dsmap.SetAt(0x48868d5a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868d5a>); // 5.95% + m_dsmap.SetAt(0x48868d6a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868d6a>); // 8.10% + m_dsmap.SetAt(0x48868d7a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868d7a>); // 46.88% + m_dsmap.SetAt(0x4886957a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4886957a>); // 2.24% + m_dsmap.SetAt(0x4887854e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887854e>); // 8.47% + m_dsmap.SetAt(0x4887857a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887857a>); // 26.93% + m_dsmap.SetAt(0x48878d4e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878d4e>); // 3.63% + m_dsmap.SetAt(0x48878d7a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878d7a>); // 29.77% + m_dsmap.SetAt(0x4887917a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887917a>); // 24.09% + m_dsmap.SetAt(0x4887954e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887954e>); // 11.46% + m_dsmap.SetAt(0x4887957a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887957a>); // 27.16% + m_dsmap.SetAt(0x48884d7a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48884d7a>); // 8.23% + m_dsmap.SetAt(0x488a917a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488a917a>); // 19.80% + m_dsmap.SetAt(0x488e8d6a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8d6a>); // 4.32% + m_dsmap.SetAt(0x488e8d7a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8d7a>); // 60.16% + m_dsmap.SetAt(0x4906806a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4906806a>); // 25.96% + m_dsmap.SetAt(0x4906886a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4906886a>); // 5.88% + m_dsmap.SetAt(0x4907804e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4907804e>); // 3.48% + m_dsmap.SetAt(0x4d03204e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d03204e>); // 64.22% + m_dsmap.SetAt(0x4d06986a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d06986a>); // 3.72% + m_dsmap.SetAt(0x4d06a06a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d06a06a>); // 19.99% + m_dsmap.SetAt(0x4d06a86a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d06a86a>); // 12.55% + m_dsmap.SetAt(0x4d07806a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d07806a>); // 7.69% + m_dsmap.SetAt(0x4d0ea06a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d0ea06a>); // 3.71% + m_dsmap.SetAt(0x4d0ea86a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d0ea86a>); // 5.03% + m_dsmap.SetAt(0x5503204e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5503204e>); // 21.69% // ico - m_dsmap.SetAt(0x1fe04060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04060>); // 6.21% - m_dsmap.SetAt(0x1fe380cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe380cc>); // 15.32% - m_dsmap.SetAt(0x1fe3a04c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3a04c>); // 44.62% - m_dsmap.SetAt(0x1fe68360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68360>); // 6.82% - m_dsmap.SetAt(0x1fe68b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68b60>); // 41.46% - m_dsmap.SetAt(0x48859060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48859060>); // 9.43% - m_dsmap.SetAt(0x4893814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4893814c>); // 40.73% - m_dsmap.SetAt(0x49004060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004060>); // 5.53% - m_dsmap.SetAt(0x49068b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068b60>); // 21.00% - m_dsmap.SetAt(0x4d004060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d004060>); // 195.95% - m_dsmap.SetAt(0x4d068360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068360>); // 15.67% - m_dsmap.SetAt(0x4d068b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068b60>); // 120.45% - m_dsmap.SetAt(0x4d078360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d078360>); // 5.76% - m_dsmap.SetAt(0x48858060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48858060>); // 15.74% - m_dsmap.SetAt(0x4c468b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c468b60>); // 36.86% - m_dsmap.SetAt(0x4c478b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c478b60>); // 10.36% - m_dsmap.SetAt(0x1fe28060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe28060>); // 14.34% - m_dsmap.SetAt(0x4d028060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d028060>); // 15.65% + m_dsmap.SetAt(0x1fe04060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04060>); // 6.21% + m_dsmap.SetAt(0x1fe380cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe380cc>); // 15.32% + m_dsmap.SetAt(0x1fe3a04c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe3a04c>); // 44.62% + m_dsmap.SetAt(0x1fe68360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe68360>); // 6.82% + m_dsmap.SetAt(0x1fe68b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe68b60>); // 41.46% + m_dsmap.SetAt(0x48859060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48859060>); // 9.43% + m_dsmap.SetAt(0x4893814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4893814c>); // 40.73% + m_dsmap.SetAt(0x49004060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004060>); // 5.53% + m_dsmap.SetAt(0x49068b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068b60>); // 21.00% + m_dsmap.SetAt(0x4d004060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d004060>); // 195.95% + m_dsmap.SetAt(0x4d068360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d068360>); // 15.67% + m_dsmap.SetAt(0x4d068b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d068b60>); // 120.45% + m_dsmap.SetAt(0x4d078360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d078360>); // 5.76% + m_dsmap.SetAt(0x48858060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48858060>); // 15.74% + m_dsmap.SetAt(0x4c468b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c468b60>); // 36.86% + m_dsmap.SetAt(0x4c478b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c478b60>); // 10.36% + m_dsmap.SetAt(0x1fe28060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe28060>); // 14.34% + m_dsmap.SetAt(0x4d028060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d028060>); // 15.65% // kuon - m_dsmap.SetAt(0x4847004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4847004d>); // 9.19% - m_dsmap.SetAt(0x48470065, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48470065>); // 17.45% - m_dsmap.SetAt(0x4847084d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4847084d>); // 12.91% - m_dsmap.SetAt(0x4880404e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4880404e>); // 4.30% - m_dsmap.SetAt(0x48860365, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48860365>); // 10.49% - m_dsmap.SetAt(0x48860b65, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48860b65>); // 26.88% - m_dsmap.SetAt(0x48868365, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868365>); // 2.99% - m_dsmap.SetAt(0x48868b65, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868b65>); // 17.44% - m_dsmap.SetAt(0x4887004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887004d>); // 21.13% - m_dsmap.SetAt(0x48870365, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48870365>); // 30.82% - m_dsmap.SetAt(0x48878b65, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878b65>); // 13.19% - m_dsmap.SetAt(0x488e0b65, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e0b65>); // 56.84% - m_dsmap.SetAt(0x488e8b65, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8b65>); // 19.74% - m_dsmap.SetAt(0x49060865, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49060865>); // 11.56% - m_dsmap.SetAt(0x4907004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907004d>); // 14.36% - m_dsmap.SetAt(0x49070065, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49070065>); // 5.51% - m_dsmap.SetAt(0x4907084d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907084d>); // 14.16% - m_dsmap.SetAt(0x4907884d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907884d>); // 18.56% - m_dsmap.SetAt(0x4c429065, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c429065>); // 16.47% - m_dsmap.SetAt(0x5fe04055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe04055>); // 4.02% - m_dsmap.SetAt(0x5fe3004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe3004d>); // 12.18% - m_dsmap.SetAt(0x5fe3804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe3804d>); // 17.31% - m_dsmap.SetAt(0x5fee0b65, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fee0b65>); // 27.96% + m_dsmap.SetAt(0x4847004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4847004d>); // 9.19% + m_dsmap.SetAt(0x48470065, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48470065>); // 17.45% + m_dsmap.SetAt(0x4847084d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4847084d>); // 12.91% + m_dsmap.SetAt(0x4880404e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4880404e>); // 4.30% + m_dsmap.SetAt(0x48860365, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48860365>); // 10.49% + m_dsmap.SetAt(0x48860b65, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48860b65>); // 26.88% + m_dsmap.SetAt(0x48868365, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868365>); // 2.99% + m_dsmap.SetAt(0x48868b65, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868b65>); // 17.44% + m_dsmap.SetAt(0x4887004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4887004d>); // 21.13% + m_dsmap.SetAt(0x48870365, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48870365>); // 30.82% + m_dsmap.SetAt(0x48878b65, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878b65>); // 13.19% + m_dsmap.SetAt(0x488e0b65, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e0b65>); // 56.84% + m_dsmap.SetAt(0x488e8b65, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8b65>); // 19.74% + m_dsmap.SetAt(0x49060865, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49060865>); // 11.56% + m_dsmap.SetAt(0x4907004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4907004d>); // 14.36% + m_dsmap.SetAt(0x49070065, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49070065>); // 5.51% + m_dsmap.SetAt(0x4907084d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4907084d>); // 14.16% + m_dsmap.SetAt(0x4907884d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4907884d>); // 18.56% + m_dsmap.SetAt(0x4c429065, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c429065>); // 16.47% + m_dsmap.SetAt(0x5fe04055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe04055>); // 4.02% + m_dsmap.SetAt(0x5fe3004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe3004d>); // 12.18% + m_dsmap.SetAt(0x5fe3804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe3804d>); // 17.31% + m_dsmap.SetAt(0x5fee0b65, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fee0b65>); // 27.96% // hxh - m_dsmap.SetAt(0x1fe04176, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04176>); // 2.08% - m_dsmap.SetAt(0x1fe78176, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe78176>); // 3.41% - m_dsmap.SetAt(0x1fee8876, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8876>); // 23.15% - m_dsmap.SetAt(0x1fee8976, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8976>); // 10.99% - m_dsmap.SetAt(0x48804176, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804176>); // 3.38% - m_dsmap.SetAt(0x48839176, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48839176>); // 6.41% - m_dsmap.SetAt(0x488e8876, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8876>); // 3.25% - m_dsmap.SetAt(0x488e8976, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8976>); // 2.41% - m_dsmap.SetAt(0x489e8876, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x489e8876>); // 3.00% - m_dsmap.SetAt(0x49004976, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004976>); // 3.51% - m_dsmap.SetAt(0x49068176, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068176>); // 21.64% - m_dsmap.SetAt(0x1fe04976, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04976>); // 23.04% - m_dsmap.SetAt(0x1fee8076, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8076>); // 2.87% - m_dsmap.SetAt(0x48838176, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48838176>); // 6.49% - m_dsmap.SetAt(0x48878176, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878176>); // 6.63% - m_dsmap.SetAt(0x48879176, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879176>); // 4.28% - m_dsmap.SetAt(0x48884976, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884976>); // 3.84% + m_dsmap.SetAt(0x1fe04176, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04176>); // 2.08% + m_dsmap.SetAt(0x1fe78176, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe78176>); // 3.41% + m_dsmap.SetAt(0x1fee8876, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee8876>); // 23.15% + m_dsmap.SetAt(0x1fee8976, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee8976>); // 10.99% + m_dsmap.SetAt(0x48804176, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804176>); // 3.38% + m_dsmap.SetAt(0x48839176, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48839176>); // 6.41% + m_dsmap.SetAt(0x488e8876, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8876>); // 3.25% + m_dsmap.SetAt(0x488e8976, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8976>); // 2.41% + m_dsmap.SetAt(0x489e8876, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x489e8876>); // 3.00% + m_dsmap.SetAt(0x49004976, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004976>); // 3.51% + m_dsmap.SetAt(0x49068176, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068176>); // 21.64% + m_dsmap.SetAt(0x1fe04976, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04976>); // 23.04% + m_dsmap.SetAt(0x1fee8076, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee8076>); // 2.87% + m_dsmap.SetAt(0x48838176, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48838176>); // 6.49% + m_dsmap.SetAt(0x48878176, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878176>); // 6.63% + m_dsmap.SetAt(0x48879176, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48879176>); // 4.28% + m_dsmap.SetAt(0x48884976, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48884976>); // 3.84% // grandia extreme - m_dsmap.SetAt(0x1fe04050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04050>); // 5.03% - m_dsmap.SetAt(0x1fe1104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe1104c>); // 29.26% - m_dsmap.SetAt(0x1fe3884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3884c>); // 29.05% - m_dsmap.SetAt(0x4520404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4520404c>); // 15.63% - m_dsmap.SetAt(0x45269070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x45269070>); // 6.47% - m_dsmap.SetAt(0x452e9070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x452e9070>); // 9.20% - m_dsmap.SetAt(0x4880434c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4880434c>); // 16.35% - m_dsmap.SetAt(0x48804350, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804350>); // 21.63% - m_dsmap.SetAt(0x48804b4c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804b4c>); // 3.40% - m_dsmap.SetAt(0x48804b50, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804b50>); // 4.16% - m_dsmap.SetAt(0x48868370, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868370>); // 15.75% - m_dsmap.SetAt(0x48869370, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48869370>); // 27.39% - m_dsmap.SetAt(0x48878350, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878350>); // 2.11% - m_dsmap.SetAt(0x48878370, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878370>); // 21.73% - m_dsmap.SetAt(0x48878b50, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878b50>); // 4.87% - m_dsmap.SetAt(0x48879370, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879370>); // 33.27% - m_dsmap.SetAt(0x4888434c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4888434c>); // 14.48% - m_dsmap.SetAt(0x48884350, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884350>); // 18.31% - m_dsmap.SetAt(0x488e8b70, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8b70>); // 72.05% - m_dsmap.SetAt(0x488e9370, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e9370>); // 15.63% - m_dsmap.SetAt(0x4c81934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c81934c>); // 76.79% - m_dsmap.SetAt(0x4c984070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c984070>); // 2.36% + m_dsmap.SetAt(0x1fe04050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04050>); // 5.03% + m_dsmap.SetAt(0x1fe1104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe1104c>); // 29.26% + m_dsmap.SetAt(0x1fe3884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe3884c>); // 29.05% + m_dsmap.SetAt(0x4520404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4520404c>); // 15.63% + m_dsmap.SetAt(0x45269070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x45269070>); // 6.47% + m_dsmap.SetAt(0x452e9070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x452e9070>); // 9.20% + m_dsmap.SetAt(0x4880434c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4880434c>); // 16.35% + m_dsmap.SetAt(0x48804350, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804350>); // 21.63% + m_dsmap.SetAt(0x48804b4c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804b4c>); // 3.40% + m_dsmap.SetAt(0x48804b50, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804b50>); // 4.16% + m_dsmap.SetAt(0x48868370, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48868370>); // 15.75% + m_dsmap.SetAt(0x48869370, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48869370>); // 27.39% + m_dsmap.SetAt(0x48878350, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878350>); // 2.11% + m_dsmap.SetAt(0x48878370, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878370>); // 21.73% + m_dsmap.SetAt(0x48878b50, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878b50>); // 4.87% + m_dsmap.SetAt(0x48879370, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48879370>); // 33.27% + m_dsmap.SetAt(0x4888434c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4888434c>); // 14.48% + m_dsmap.SetAt(0x48884350, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48884350>); // 18.31% + m_dsmap.SetAt(0x488e8b70, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8b70>); // 72.05% + m_dsmap.SetAt(0x488e9370, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e9370>); // 15.63% + m_dsmap.SetAt(0x4c81934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c81934c>); // 76.79% + m_dsmap.SetAt(0x4c984070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c984070>); // 2.36% // enthusa - m_dsmap.SetAt(0x1fe04067, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04067>); // 3.85% - m_dsmap.SetAt(0x1fe04854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04854>); // 26.01% - m_dsmap.SetAt(0x1fe60168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe60168>); // 5.84% - m_dsmap.SetAt(0x1fe60968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe60968>); // 5.03% - m_dsmap.SetAt(0x1fe79364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe79364>); // 13.59% - m_dsmap.SetAt(0x1fe84064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe84064>); // 6.10% - m_dsmap.SetAt(0x1fee0964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee0964>); // 32.09% - m_dsmap.SetAt(0x1fee8064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8064>); // 2.00% - m_dsmap.SetAt(0x1fee8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8864>); // 22.87% - m_dsmap.SetAt(0x48804364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804364>); // 6.93% - m_dsmap.SetAt(0x48804b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804b64>); // 16.53% - m_dsmap.SetAt(0x48804ee4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804ee4>); // 3.43% - m_dsmap.SetAt(0x4883004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883004d>); // 24.27% - m_dsmap.SetAt(0x48858064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48858064>); // 3.08% - m_dsmap.SetAt(0x48858364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48858364>); // 3.38% - m_dsmap.SetAt(0x48860f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48860f64>); // 16.25% - m_dsmap.SetAt(0x48878364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878364>); // 7.33% - m_dsmap.SetAt(0x48879364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879364>); // 13.53% - m_dsmap.SetAt(0x4a46884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a46884c>); // 15.20% - m_dsmap.SetAt(0x4b020864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b020864>); // 4.27% - m_dsmap.SetAt(0x4b060864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b060864>); // 19.55% - m_dsmap.SetAt(0x4b120864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b120864>); // 10.40% - m_dsmap.SetAt(0x4b168064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b168064>); // 2.64% - m_dsmap.SetAt(0x4c83104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c83104c>); // 24.37% - m_dsmap.SetAt(0x4d40404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d40404c>); // 11.69% - m_dsmap.SetAt(0x5fe1104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe1104c>); // 12.87% - m_dsmap.SetAt(0x5fe3104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe3104c>); // 2.39% - m_dsmap.SetAt(0x5fe3104d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe3104d>); // 20.74% + m_dsmap.SetAt(0x1fe04067, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04067>); // 3.85% + m_dsmap.SetAt(0x1fe04854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04854>); // 26.01% + m_dsmap.SetAt(0x1fe60168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe60168>); // 5.84% + m_dsmap.SetAt(0x1fe60968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe60968>); // 5.03% + m_dsmap.SetAt(0x1fe79364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe79364>); // 13.59% + m_dsmap.SetAt(0x1fe84064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe84064>); // 6.10% + m_dsmap.SetAt(0x1fee0964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee0964>); // 32.09% + m_dsmap.SetAt(0x1fee8064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee8064>); // 2.00% + m_dsmap.SetAt(0x1fee8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee8864>); // 22.87% + m_dsmap.SetAt(0x48804364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804364>); // 6.93% + m_dsmap.SetAt(0x48804b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804b64>); // 16.53% + m_dsmap.SetAt(0x48804ee4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804ee4>); // 3.43% + m_dsmap.SetAt(0x4883004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4883004d>); // 24.27% + m_dsmap.SetAt(0x48858064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48858064>); // 3.08% + m_dsmap.SetAt(0x48858364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48858364>); // 3.38% + m_dsmap.SetAt(0x48860f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48860f64>); // 16.25% + m_dsmap.SetAt(0x48878364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48878364>); // 7.33% + m_dsmap.SetAt(0x48879364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48879364>); // 13.53% + m_dsmap.SetAt(0x4a46884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4a46884c>); // 15.20% + m_dsmap.SetAt(0x4b020864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b020864>); // 4.27% + m_dsmap.SetAt(0x4b060864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b060864>); // 19.55% + m_dsmap.SetAt(0x4b120864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b120864>); // 10.40% + m_dsmap.SetAt(0x4b168064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b168064>); // 2.64% + m_dsmap.SetAt(0x4c83104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c83104c>); // 24.37% + m_dsmap.SetAt(0x4d40404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d40404c>); // 11.69% + m_dsmap.SetAt(0x5fe1104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe1104c>); // 12.87% + m_dsmap.SetAt(0x5fe3104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe3104c>); // 2.39% + m_dsmap.SetAt(0x5fe3104d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe3104d>); // 20.74% // ys 1/2 eternal story - m_dsmap.SetAt(0x1fe3104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3104c>); // 8.54% - m_dsmap.SetAt(0x490701cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490701cc>); // 8.44% - m_dsmap.SetAt(0x4c8791cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8791cc>); // 10.82% - m_dsmap.SetAt(0x5420404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5420404c>); // 6.71% + m_dsmap.SetAt(0x1fe3104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe3104c>); // 8.54% + m_dsmap.SetAt(0x490701cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490701cc>); // 8.44% + m_dsmap.SetAt(0x4c8791cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c8791cc>); // 10.82% + m_dsmap.SetAt(0x5420404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5420404c>); // 6.71% // bloody roar - m_dsmap.SetAt(0x1fe84868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe84868>); // 9.84% - m_dsmap.SetAt(0x1fee8b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8b68>); // 24.88% - m_dsmap.SetAt(0x48810068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48810068>); // 22.47% - m_dsmap.SetAt(0x48810368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48810368>); // 24.36% - m_dsmap.SetAt(0x48818368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48818368>); // 10.37% - m_dsmap.SetAt(0x48819368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48819368>); // 8.72% - m_dsmap.SetAt(0x48848368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48848368>); // 18.03% - m_dsmap.SetAt(0x48859368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48859368>); // 5.29% - m_dsmap.SetAt(0x488791e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488791e8>); // 12.45% - m_dsmap.SetAt(0x488e9368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e9368>); // 8.65% - m_dsmap.SetAt(0x49004068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004068>); // 8.69% - m_dsmap.SetAt(0x49004b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004b68>); // 6.86% - m_dsmap.SetAt(0x49018368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49018368>); // 12.57% - m_dsmap.SetAt(0x49019368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49019368>); // 12.39% - m_dsmap.SetAt(0x49020b4c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49020b4c>); // 17.18% - m_dsmap.SetAt(0x49058368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49058368>); // 2.61% - m_dsmap.SetAt(0x49068b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068b68>); // 3.40% - m_dsmap.SetAt(0x4907834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907834c>); // 2.86% - m_dsmap.SetAt(0x490789e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490789e8>); // 2.47% - m_dsmap.SetAt(0x4b068068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b068068>); // 14.59% - m_dsmap.SetAt(0x4b068868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b068868>); // 13.91% - m_dsmap.SetAt(0x4b0a8868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b0a8868>); // 4.19% - m_dsmap.SetAt(0x4b0e8868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b0e8868>); // 3.64% - m_dsmap.SetAt(0x4b0e9068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b0e9068>); // 2.42% - m_dsmap.SetAt(0x4c469368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c469368>); // 6.06% + m_dsmap.SetAt(0x1fe84868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe84868>); // 9.84% + m_dsmap.SetAt(0x1fee8b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fee8b68>); // 24.88% + m_dsmap.SetAt(0x48810068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48810068>); // 22.47% + m_dsmap.SetAt(0x48810368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48810368>); // 24.36% + m_dsmap.SetAt(0x48818368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48818368>); // 10.37% + m_dsmap.SetAt(0x48819368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48819368>); // 8.72% + m_dsmap.SetAt(0x48848368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48848368>); // 18.03% + m_dsmap.SetAt(0x48859368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48859368>); // 5.29% + m_dsmap.SetAt(0x488791e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488791e8>); // 12.45% + m_dsmap.SetAt(0x488e9368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e9368>); // 8.65% + m_dsmap.SetAt(0x49004068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004068>); // 8.69% + m_dsmap.SetAt(0x49004b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004b68>); // 6.86% + m_dsmap.SetAt(0x49018368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49018368>); // 12.57% + m_dsmap.SetAt(0x49019368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49019368>); // 12.39% + m_dsmap.SetAt(0x49020b4c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49020b4c>); // 17.18% + m_dsmap.SetAt(0x49058368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49058368>); // 2.61% + m_dsmap.SetAt(0x49068b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49068b68>); // 3.40% + m_dsmap.SetAt(0x4907834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4907834c>); // 2.86% + m_dsmap.SetAt(0x490789e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490789e8>); // 2.47% + m_dsmap.SetAt(0x4b068068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b068068>); // 14.59% + m_dsmap.SetAt(0x4b068868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b068868>); // 13.91% + m_dsmap.SetAt(0x4b0a8868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b0a8868>); // 4.19% + m_dsmap.SetAt(0x4b0e8868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b0e8868>); // 3.64% + m_dsmap.SetAt(0x4b0e9068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4b0e9068>); // 2.42% + m_dsmap.SetAt(0x4c469368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c469368>); // 6.06% // ferrari f355 challenge - m_dsmap.SetAt(0x48858164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48858164>); // 3.11% - m_dsmap.SetAt(0x48858168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48858168>); // 39.59% - m_dsmap.SetAt(0x488e8064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8064>); // 4.33% - m_dsmap.SetAt(0x488e8364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8364>); // 4.76% - m_dsmap.SetAt(0x4890404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4890404c>); // 5.97% - m_dsmap.SetAt(0x48984064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48984064>); // 2.27% - m_dsmap.SetAt(0x489e8364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x489e8364>); // 6.39% - m_dsmap.SetAt(0x489e8b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x489e8b64>); // 7.29% - m_dsmap.SetAt(0x49484064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49484064>); // 2.44% - m_dsmap.SetAt(0x49484864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49484864>); // 3.30% - m_dsmap.SetAt(0x5fe04068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe04068>); // 17.08% - m_dsmap.SetAt(0x5fe04868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe04868>); // 6.03% - m_dsmap.SetAt(0x5fe60064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe60064>); // 15.71% - m_dsmap.SetAt(0x5fee0064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fee0064>); // 11.00% - m_dsmap.SetAt(0x5fee0864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fee0864>); // 33.74% - m_dsmap.SetAt(0x5feeb864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5feeb864>); // 7.91% - m_dsmap.SetAt(0x5feeb868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5feeb868>); // 2.80% - m_dsmap.SetAt(0x5ff60064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5ff60064>); // 18.85% - m_dsmap.SetAt(0x5ffe0064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5ffe0064>); // 17.14% - m_dsmap.SetAt(0x5ffe0864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5ffe0864>); // 32.32% - m_dsmap.SetAt(0x5ffeb864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5ffeb864>); // 4.45% + m_dsmap.SetAt(0x48858164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48858164>); // 3.11% + m_dsmap.SetAt(0x48858168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48858168>); // 39.59% + m_dsmap.SetAt(0x488e8064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8064>); // 4.33% + m_dsmap.SetAt(0x488e8364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8364>); // 4.76% + m_dsmap.SetAt(0x4890404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4890404c>); // 5.97% + m_dsmap.SetAt(0x48984064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48984064>); // 2.27% + m_dsmap.SetAt(0x489e8364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x489e8364>); // 6.39% + m_dsmap.SetAt(0x489e8b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x489e8b64>); // 7.29% + m_dsmap.SetAt(0x49484064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49484064>); // 2.44% + m_dsmap.SetAt(0x49484864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49484864>); // 3.30% + m_dsmap.SetAt(0x5fe04068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe04068>); // 17.08% + m_dsmap.SetAt(0x5fe04868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe04868>); // 6.03% + m_dsmap.SetAt(0x5fe60064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fe60064>); // 15.71% + m_dsmap.SetAt(0x5fee0064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fee0064>); // 11.00% + m_dsmap.SetAt(0x5fee0864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fee0864>); // 33.74% + m_dsmap.SetAt(0x5feeb864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5feeb864>); // 7.91% + m_dsmap.SetAt(0x5feeb868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5feeb868>); // 2.80% + m_dsmap.SetAt(0x5ff60064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5ff60064>); // 18.85% + m_dsmap.SetAt(0x5ffe0064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5ffe0064>); // 17.14% + m_dsmap.SetAt(0x5ffe0864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5ffe0864>); // 32.32% + m_dsmap.SetAt(0x5ffeb864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5ffeb864>); // 4.45% // king of fighters xi - m_dsmap.SetAt(0x4880484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4880484c>); // 15.57% - m_dsmap.SetAt(0x4881804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881804c>); // 5.26% - m_dsmap.SetAt(0x4881904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881904c>); // 20.91% - m_dsmap.SetAt(0x4885804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885804c>); // 27.10% - m_dsmap.SetAt(0x488589e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488589e8>); // 99.82% - m_dsmap.SetAt(0x488591e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488591e8>); // 56.90% - m_dsmap.SetAt(0x74819050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x74819050>); // 11.28% + m_dsmap.SetAt(0x4880484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4880484c>); // 15.57% + m_dsmap.SetAt(0x4881804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4881804c>); // 5.26% + m_dsmap.SetAt(0x4881904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4881904c>); // 20.91% + m_dsmap.SetAt(0x4885804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4885804c>); // 27.10% + m_dsmap.SetAt(0x488589e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488589e8>); // 99.82% + m_dsmap.SetAt(0x488591e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488591e8>); // 56.90% + m_dsmap.SetAt(0x74819050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x74819050>); // 11.28% // mana khemia - m_dsmap.SetAt(0x4885904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885904d>); // 10.84% - m_dsmap.SetAt(0x49038059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49038059>); // 30.86% + m_dsmap.SetAt(0x4885904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4885904d>); // 10.84% + m_dsmap.SetAt(0x49038059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49038059>); // 30.86% // ar tonelico 2 - m_dsmap.SetAt(0x1fe04059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04059>); // 3.09% - m_dsmap.SetAt(0x484f8369, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x484f8369>); // 7.81% - m_dsmap.SetAt(0x48804059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804059>); // 15.96% - m_dsmap.SetAt(0x4881804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881804d>); // 19.93% - m_dsmap.SetAt(0x48819059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48819059>); // 22.64% - m_dsmap.SetAt(0x4885804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885804d>); // 6.01% - m_dsmap.SetAt(0x48859059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48859059>); // 11.13% - m_dsmap.SetAt(0x488e8369, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8369>); // 20.98% - m_dsmap.SetAt(0x488e9369, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e9369>); // 136.48% - m_dsmap.SetAt(0x488f8369, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f8369>); // 21.74% - m_dsmap.SetAt(0x488f9369, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f9369>); // 59.36% - m_dsmap.SetAt(0x4905804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4905804d>); // 3.85% - m_dsmap.SetAt(0x4905904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4905904d>); // 5.55% - m_dsmap.SetAt(0x4907804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907804d>); // 12.62% - m_dsmap.SetAt(0x4907904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907904d>); // 3.97% - m_dsmap.SetAt(0x49079059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49079059>); // 90.14% - m_dsmap.SetAt(0x490f8369, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490f8369>); // 25.78% + m_dsmap.SetAt(0x1fe04059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04059>); // 3.09% + m_dsmap.SetAt(0x484f8369, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x484f8369>); // 7.81% + m_dsmap.SetAt(0x48804059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48804059>); // 15.96% + m_dsmap.SetAt(0x4881804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4881804d>); // 19.93% + m_dsmap.SetAt(0x48819059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48819059>); // 22.64% + m_dsmap.SetAt(0x4885804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4885804d>); // 6.01% + m_dsmap.SetAt(0x48859059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48859059>); // 11.13% + m_dsmap.SetAt(0x488e8369, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e8369>); // 20.98% + m_dsmap.SetAt(0x488e9369, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e9369>); // 136.48% + m_dsmap.SetAt(0x488f8369, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488f8369>); // 21.74% + m_dsmap.SetAt(0x488f9369, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488f9369>); // 59.36% + m_dsmap.SetAt(0x4905804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4905804d>); // 3.85% + m_dsmap.SetAt(0x4905904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4905904d>); // 5.55% + m_dsmap.SetAt(0x4907804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4907804d>); // 12.62% + m_dsmap.SetAt(0x4907904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4907904d>); // 3.97% + m_dsmap.SetAt(0x49079059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49079059>); // 90.14% + m_dsmap.SetAt(0x490f8369, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490f8369>); // 25.78% // rouge galaxy - m_dsmap.SetAt(0x484e8164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x484e8164>); // 15.77% - m_dsmap.SetAt(0x48858154, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48858154>); // 15.37% - m_dsmap.SetAt(0x488b0964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488b0964>); // 98.90% + m_dsmap.SetAt(0x484e8164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x484e8164>); // 15.77% + m_dsmap.SetAt(0x48858154, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48858154>); // 15.37% + m_dsmap.SetAt(0x488b0964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488b0964>); // 98.90% // mobile suit gundam seed battle assault 3 - m_dsmap.SetAt(0x48584064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48584064>); // 6.20% - m_dsmap.SetAt(0x488390cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488390cc>); // 19.78% - m_dsmap.SetAt(0x488780e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488780e4>); // 6.17% - m_dsmap.SetAt(0x488781cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488781cc>); // 9.42% - m_dsmap.SetAt(0x488791cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488791cc>); // 9.41% - m_dsmap.SetAt(0x488e90f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e90f4>); // 2.39% - m_dsmap.SetAt(0x49004854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004854>); // 15.80% - m_dsmap.SetAt(0x490781cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490781cc>); // 2.27% - m_dsmap.SetAt(0x490e8074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8074>); // 5.53% - m_dsmap.SetAt(0x490e9074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e9074>); // 5.99% - m_dsmap.SetAt(0x490e9164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e9164>); // 9.80% - m_dsmap.SetAt(0x49184064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49184064>); // 6.57% - m_dsmap.SetAt(0x4c81004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c81004d>); // 11.58% - m_dsmap.SetAt(0x5fee8174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fee8174>); // 9.44% - m_dsmap.SetAt(0x5fee8974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fee8974>); // 50.05% - m_dsmap.SetAt(0x5fee9174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fee9174>); // 3.41% + m_dsmap.SetAt(0x48584064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48584064>); // 6.20% + m_dsmap.SetAt(0x488390cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488390cc>); // 19.78% + m_dsmap.SetAt(0x488780e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488780e4>); // 6.17% + m_dsmap.SetAt(0x488781cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488781cc>); // 9.42% + m_dsmap.SetAt(0x488791cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488791cc>); // 9.41% + m_dsmap.SetAt(0x488e90f4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488e90f4>); // 2.39% + m_dsmap.SetAt(0x49004854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49004854>); // 15.80% + m_dsmap.SetAt(0x490781cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490781cc>); // 2.27% + m_dsmap.SetAt(0x490e8074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e8074>); // 5.53% + m_dsmap.SetAt(0x490e9074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e9074>); // 5.99% + m_dsmap.SetAt(0x490e9164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490e9164>); // 9.80% + m_dsmap.SetAt(0x49184064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49184064>); // 6.57% + m_dsmap.SetAt(0x4c81004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c81004d>); // 11.58% + m_dsmap.SetAt(0x5fee8174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fee8174>); // 9.44% + m_dsmap.SetAt(0x5fee8974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fee8974>); // 50.05% + m_dsmap.SetAt(0x5fee9174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5fee9174>); // 3.41% // hajime no ippo 2 - m_dsmap.SetAt(0x1fe39358, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe39358>); // 4.42% - m_dsmap.SetAt(0x4881034c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881034c>); // 20.41% - m_dsmap.SetAt(0x48884068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884068>); // 3.46% - m_dsmap.SetAt(0x488a9368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488a9368>); // 28.16% - m_dsmap.SetAt(0x48c28b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48c28b68>); // 6.85% + m_dsmap.SetAt(0x1fe39358, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe39358>); // 4.42% + m_dsmap.SetAt(0x4881034c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4881034c>); // 20.41% + m_dsmap.SetAt(0x48884068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48884068>); // 3.46% + m_dsmap.SetAt(0x488a9368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488a9368>); // 28.16% + m_dsmap.SetAt(0x48c28b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48c28b68>); // 6.85% // virtual tennis 2 - m_dsmap.SetAt(0x1fe681f5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe681f5>); // 4.41% - m_dsmap.SetAt(0x488041e5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488041e5>); // 2.00% - m_dsmap.SetAt(0x488049e5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488049e5>); // 3.09% - m_dsmap.SetAt(0x488581e5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488581e5>); // 2.22% - m_dsmap.SetAt(0x488589e5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488589e5>); // 2.12% - m_dsmap.SetAt(0x488591e5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488591e5>); // 7.06% - m_dsmap.SetAt(0x488681f5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488681f5>); // 22.24% - m_dsmap.SetAt(0x488689f5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488689f5>); // 27.62% - m_dsmap.SetAt(0x4c818055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c818055>); // 14.73% - m_dsmap.SetAt(0x4c819055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c819055>); // 20.88% - m_dsmap.SetAt(0x4c8781f5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8781f5>); // 11.33% - m_dsmap.SetAt(0x4d0681cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d0681cd>); // 3.65% - m_dsmap.SetAt(0x5100404d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5100404d>); // 3.70% - m_dsmap.SetAt(0x5540404d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5540404d>); // 5.28% + m_dsmap.SetAt(0x1fe681f5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe681f5>); // 4.41% + m_dsmap.SetAt(0x488041e5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488041e5>); // 2.00% + m_dsmap.SetAt(0x488049e5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488049e5>); // 3.09% + m_dsmap.SetAt(0x488581e5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488581e5>); // 2.22% + m_dsmap.SetAt(0x488589e5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488589e5>); // 2.12% + m_dsmap.SetAt(0x488591e5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488591e5>); // 7.06% + m_dsmap.SetAt(0x488681f5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488681f5>); // 22.24% + m_dsmap.SetAt(0x488689f5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488689f5>); // 27.62% + m_dsmap.SetAt(0x4c818055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c818055>); // 14.73% + m_dsmap.SetAt(0x4c819055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c819055>); // 20.88% + m_dsmap.SetAt(0x4c8781f5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c8781f5>); // 11.33% + m_dsmap.SetAt(0x4d0681cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d0681cd>); // 3.65% + m_dsmap.SetAt(0x5100404d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5100404d>); // 3.70% + m_dsmap.SetAt(0x5540404d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x5540404d>); // 5.28% // crash wrath of cortex - m_dsmap.SetAt(0x1fe20864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe20864>); // 14.55% - m_dsmap.SetAt(0x1fe28064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe28064>); // 2.29% - m_dsmap.SetAt(0x1fe5834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe5834c>); // 2.80% - m_dsmap.SetAt(0x1fe78064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe78064>); // 9.75% - m_dsmap.SetAt(0x4840474c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4840474c>); // 6.45% - m_dsmap.SetAt(0x48818364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48818364>); // 5.97% - m_dsmap.SetAt(0x48828764, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48828764>); // 3.79% - m_dsmap.SetAt(0x48828f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48828f64>); // 12.66% - m_dsmap.SetAt(0x48838364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48838364>); // 12.39% - m_dsmap.SetAt(0x48838f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48838f64>); // 7.37% - m_dsmap.SetAt(0x49028f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49028f64>); // 16.23% - m_dsmap.SetAt(0x49030764, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49030764>); // 139.71% - m_dsmap.SetAt(0x49038f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49038f64>); // 14.67% - m_dsmap.SetAt(0x4a838364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a838364>); // 6.38% - m_dsmap.SetAt(0x4d05834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d05834c>); // 8.50% + m_dsmap.SetAt(0x1fe20864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe20864>); // 14.55% + m_dsmap.SetAt(0x1fe28064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe28064>); // 2.29% + m_dsmap.SetAt(0x1fe5834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe5834c>); // 2.80% + m_dsmap.SetAt(0x1fe78064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe78064>); // 9.75% + m_dsmap.SetAt(0x4840474c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4840474c>); // 6.45% + m_dsmap.SetAt(0x48818364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48818364>); // 5.97% + m_dsmap.SetAt(0x48828764, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48828764>); // 3.79% + m_dsmap.SetAt(0x48828f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48828f64>); // 12.66% + m_dsmap.SetAt(0x48838364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48838364>); // 12.39% + m_dsmap.SetAt(0x48838f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48838f64>); // 7.37% + m_dsmap.SetAt(0x49028f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49028f64>); // 16.23% + m_dsmap.SetAt(0x49030764, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49030764>); // 139.71% + m_dsmap.SetAt(0x49038f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49038f64>); // 14.67% + m_dsmap.SetAt(0x4a838364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4a838364>); // 6.38% + m_dsmap.SetAt(0x4d05834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4d05834c>); // 8.50% // sbam 2 - m_dsmap.SetAt(0x1fe041e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe041e8>); // 7.38% - m_dsmap.SetAt(0x1fe591e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe591e8>); // 10.23% - m_dsmap.SetAt(0x488041e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488041e8>); // 10.21% - m_dsmap.SetAt(0x48859068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48859068>); // 4.45% - m_dsmap.SetAt(0x490041e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490041e8>); // 10.73% - m_dsmap.SetAt(0x490049e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490049e8>); // 3.33% - m_dsmap.SetAt(0x552041e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x552041e8>); // 10.89% + m_dsmap.SetAt(0x1fe041e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe041e8>); // 7.38% + m_dsmap.SetAt(0x1fe591e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe591e8>); // 10.23% + m_dsmap.SetAt(0x488041e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x488041e8>); // 10.21% + m_dsmap.SetAt(0x48859068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48859068>); // 4.45% + m_dsmap.SetAt(0x490041e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490041e8>); // 10.73% + m_dsmap.SetAt(0x490049e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x490049e8>); // 3.33% + m_dsmap.SetAt(0x552041e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x552041e8>); // 10.89% // remember 11 - m_dsmap.SetAt(0x48819068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48819068>); // 13.06% - m_dsmap.SetAt(0x48839068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48839068>); // 43.44% - m_dsmap.SetAt(0x4c818068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c818068>); // 22.85% - m_dsmap.SetAt(0x4c819068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c819068>); // 22.51% + m_dsmap.SetAt(0x48819068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48819068>); // 13.06% + m_dsmap.SetAt(0x48839068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x48839068>); // 43.44% + m_dsmap.SetAt(0x4c818068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c818068>); // 22.85% + m_dsmap.SetAt(0x4c819068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c819068>); // 22.51% // prince of tennis @@ -2588,11 +2578,25 @@ void GSDrawScanline::Init() // god of war + // aura for laura + + m_dsmap.SetAt(0x1fe04070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe04070>); // 60.38% + m_dsmap.SetAt(0x1fe38070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe38070>); // 26.74% + m_dsmap.SetAt(0x1fe68070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe68070>); // 18.75% + m_dsmap.SetAt(0x1fe78050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe78050>); // 13.78% + m_dsmap.SetAt(0x1fe78070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe78070>); // 105.70% + m_dsmap.SetAt(0x1fe79070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fe79070>); // 54.29% + m_dsmap.SetAt(0x1fefb04c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x1fefb04c>); // 16.81% + m_dsmap.SetAt(0x4523804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4523804c>); // 117.27% + m_dsmap.SetAt(0x49058050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x49058050>); // 326.04% + m_dsmap.SetAt(0x4c818050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x4c818050>); // 47.10% + m_dsmap.SetAt(0x55204050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineEx<0x55204050>); // 8.79% + #endif } template -void GSDrawScanline::DrawScanlineT(int top, int left, int right, const GSVertexSW& v) +void GSDrawScanline::DrawScanline(int top, int left, int right, const GSVertexSW& v) { const GSVector4 ps0123 = GSVector4::ps0123(); @@ -2788,7 +2792,7 @@ void GSDrawScanline::DrawScanlineT(int top, int left, int right, const GSVertexS } template -void GSDrawScanline::DrawScanlineExT(int top, int left, int right, const GSVertexSW& v) +void GSDrawScanline::DrawScanlineEx(int top, int left, int right, const GSVertexSW& v) { const DWORD fpsm = (sel >> 0) & 3; const DWORD zpsm = (sel >> 2) & 3; diff --git a/gsdx/GSDrawScanline.h b/gsdx/GSDrawScanline.h index 1461012..9511953 100644 --- a/gsdx/GSDrawScanline.h +++ b/gsdx/GSDrawScanline.h @@ -127,10 +127,10 @@ class GSDrawScanline : public GSAlignedClass<16>, public IDrawScanline void Init(); template - void DrawScanlineT(int top, int left, int right, const GSVertexSW& v); + void DrawScanline(int top, int left, int right, const GSVertexSW& v); template - void DrawScanlineExT(int top, int left, int right, const GSVertexSW& v); + void DrawScanlineEx(int top, int left, int right, const GSVertexSW& v); __forceinline GSVector4i Wrap(const GSVector4i& t); @@ -153,6 +153,8 @@ class GSDrawScanline : public GSAlignedClass<16>, public IDrawScanline __forceinline GSVector4i ReadZBufX(int psm, const GSVector4i& addr) const; __forceinline void WriteFrameAndZBufX(int fpsm, const GSVector4i& fa, const GSVector4i& fm, const GSVector4i& f, int zpsm, const GSVector4i& za, const GSVector4i& zm, const GSVector4i& z, int pixels); + void DrawSolidRect(const GSVector4i& r, const GSVertexSW& v); + template void DrawSolidRectT(const GSVector4i* row, int* col, const GSVector4i& r, DWORD c, DWORD m); @@ -172,12 +174,8 @@ public: // IDrawScanline - bool BeginDraw(const GSRasterizerData* data); + void BeginDraw(const GSRasterizerData* data, DrawScanlinePtr* dsf, DrawSolidRectPtr* dsrf); void EndDraw(const GSRasterizerStats& stats); void SetupPrim(GS_PRIM_CLASS primclass, const GSVertexSW* vertices, const GSVertexSW& dscan); - void DrawScanline(int top, int left, int right, const GSVertexSW& v); - void DrawSolidRect(const GSVector4i& r, const GSVertexSW& v); - DrawScanlinePtr GetDrawScanlinePtr(); - void PrintStats(); }; diff --git a/gsdx/GSRasterizer.cpp b/gsdx/GSRasterizer.cpp index c8ecacd..711c34a 100644 --- a/gsdx/GSRasterizer.cpp +++ b/gsdx/GSRasterizer.cpp @@ -36,7 +36,10 @@ GSRasterizer::~GSRasterizer() void GSRasterizer::Draw(const GSRasterizerData* data) { - bool solid = m_ds->BeginDraw(data); + m_dsf = NULL; + m_dsrf = NULL; + + m_ds->BeginDraw(data, &m_dsf, &m_dsrf); const GSVector4i scissor = data->scissor; const GSVertexSW* vertices = data->vertices; @@ -65,7 +68,7 @@ void GSRasterizer::Draw(const GSRasterizerData* data) case GS_SPRITE_CLASS: ASSERT(!(count & 1)); m_stats.prims = count / 2; - for(int i = 0; i < count; i += 2) DrawSprite(&vertices[i], scissor, solid); + for(int i = 0; i < count; i += 2) DrawSprite(&vertices[i], scissor); break; default: __assume(0); @@ -91,7 +94,7 @@ void GSRasterizer::DrawPoint(const GSVertexSW* v, const GSVector4i& scissor) { if((p.y % m_threads) == m_id) { - m_ds->DrawScanline(p.y, p.x, p.x + 1, *v); + (m_ds->*m_dsf)(p.y, p.x, p.x + 1, *v); m_stats.pixels++; } @@ -400,8 +403,6 @@ void GSRasterizer::DrawTriangleSection(int top, int bottom, GSVertexSW& l, const { ASSERT(top < bottom); - IDrawScanline::DrawScanlinePtr dsf = m_ds->GetDrawScanlinePtr(); - while(1) { do @@ -444,7 +445,7 @@ void GSRasterizer::DrawTriangleSection(int top, int bottom, GSVertexSW& l, const if(px > 0) scan += dscan * px; - (m_ds->*dsf)(top, left, right, scan); + (m_ds->*m_dsf)(top, left, right, scan); } } } @@ -457,18 +458,18 @@ void GSRasterizer::DrawTriangleSection(int top, int bottom, GSVertexSW& l, const } } -void GSRasterizer::DrawSprite(const GSVertexSW* vertices, const GSVector4i& scissor, bool solid) +void GSRasterizer::DrawSprite(const GSVertexSW* vertices, const GSVector4i& scissor) { GSVertexSW v[2]; - GSVector4 mask = vertices[0].p > vertices[1].p; + GSVector4 mask = (vertices[0].p < vertices[1].p).xyzw(GSVector4::zero()); - v[0].p = vertices[0].p.blend8(vertices[1].p, mask).xyzw(vertices[1].p); - v[0].t = vertices[0].t.blend8(vertices[1].t, mask).xyzw(vertices[1].t); + v[0].p = vertices[1].p.blend8(vertices[0].p, mask); + v[0].t = vertices[1].t.blend8(vertices[0].t, mask); v[0].c = vertices[1].c; - v[1].p = vertices[1].p.blend8(vertices[0].p, mask); - v[1].t = vertices[1].t.blend8(vertices[0].t, mask); + v[1].p = vertices[0].p.blend8(vertices[1].p, mask); + v[1].t = vertices[0].t.blend8(vertices[1].t, mask); GSVector4i r(v[0].p.xyxy(v[1].p).ceil()); @@ -498,11 +499,11 @@ void GSRasterizer::DrawSprite(const GSVertexSW* vertices, const GSVector4i& scis GSVertexSW scan = v[0]; - if(solid) + if(m_dsrf) { if(m_id == 0) { - m_ds->DrawSolidRect(r, scan); + (m_ds->*m_dsrf)(r, scan); m_stats.pixels += (r.z - r.x) * (r.w - r.y); } @@ -527,13 +528,11 @@ void GSRasterizer::DrawSprite(const GSVertexSW* vertices, const GSVector4i& scis m_ds->SetupPrim(GS_SPRITE_CLASS, v, dscan); - IDrawScanline::DrawScanlinePtr dsf = m_ds->GetDrawScanlinePtr(); - for(; top < bottom; top++, scan.t += dedge.t) { if((top % m_threads) == m_id) { - (m_ds->*dsf)(top, left, right, scan); + (m_ds->*m_dsf)(top, left, right, scan); m_stats.pixels += right - left; } @@ -674,3 +673,11 @@ void GSRasterizerList::GetStats(GSRasterizerStats& stats) { stats = m_stats; } + +void GSRasterizerList::PrintStats() +{ + if(!IsEmpty()) + { + GetHead()->PrintStats(); + } +} diff --git a/gsdx/GSRasterizer.h b/gsdx/GSRasterizer.h index e471341..9288ed0 100644 --- a/gsdx/GSRasterizer.h +++ b/gsdx/GSRasterizer.h @@ -50,24 +50,24 @@ struct GSRasterizerStats class IRasterizer { public: + virtual ~IRasterizer() {} + virtual void Draw(const GSRasterizerData* data) = 0; virtual void GetStats(GSRasterizerStats& stats) = 0; + virtual void PrintStats() = 0; }; class IDrawScanline { public: typedef void (IDrawScanline::*DrawScanlinePtr)(int top, int left, int right, const GSVertexSW& v); + typedef void (IDrawScanline::*DrawSolidRectPtr)(const GSVector4i& r, const GSVertexSW& v); virtual ~IDrawScanline() {} - virtual bool BeginDraw(const GSRasterizerData* data) = 0; + virtual void BeginDraw(const GSRasterizerData* data, DrawScanlinePtr* dsf, DrawSolidRectPtr* dsrf) = 0; virtual void EndDraw(const GSRasterizerStats& stats) = 0; virtual void SetupPrim(GS_PRIM_CLASS primclass, const GSVertexSW* vertices, const GSVertexSW& dscan) = 0; - virtual void DrawScanline(int top, int left, int right, const GSVertexSW& v) = 0; - virtual void DrawSolidRect(const GSVector4i& r, const GSVertexSW& v) = 0; - virtual DrawScanlinePtr GetDrawScanlinePtr() = 0; - virtual void PrintStats() = 0; }; @@ -75,6 +75,8 @@ class GSRasterizer : public IRasterizer { protected: IDrawScanline* m_ds; + IDrawScanline::DrawScanlinePtr m_dsf; + IDrawScanline::DrawSolidRectPtr m_dsrf; int m_id; int m_threads; GSRasterizerStats m_stats; @@ -82,7 +84,7 @@ protected: void DrawPoint(const GSVertexSW* v, const GSVector4i& scissor); void DrawLine(const GSVertexSW* v, const GSVector4i& scissor); void DrawTriangle(const GSVertexSW* v, const GSVector4i& scissor); - void DrawSprite(const GSVertexSW* v, const GSVector4i& scissor, bool solid); + void DrawSprite(const GSVertexSW* v, const GSVector4i& scissor); void DrawTriangleTop(GSVertexSW* v, const GSVector4i& scissor); void DrawTriangleBottom(GSVertexSW* v, const GSVector4i& scissor); @@ -98,7 +100,6 @@ public: void Draw(const GSRasterizerData* data); void GetStats(GSRasterizerStats& stats); - void PrintStats() {m_ds->PrintStats();} }; @@ -123,7 +124,7 @@ public: void Draw(const GSRasterizerData* data); }; -class GSRasterizerList : public CAtlList, public IRasterizer +class GSRasterizerList : protected CAtlList, public IRasterizer { long* m_sync; GSRasterizerStats m_stats; @@ -150,6 +151,5 @@ public: void Draw(const GSRasterizerData* data); void GetStats(GSRasterizerStats& stats); - - void PrintStats() {GetHead()->PrintStats();} + void PrintStats(); }; diff --git a/gsdx/GSRendererSW.h b/gsdx/GSRendererSW.h index 5ea82cd..015253c 100644 --- a/gsdx/GSRendererSW.h +++ b/gsdx/GSRendererSW.h @@ -86,7 +86,8 @@ protected: m_reset = false; } - // if((m_perfmon.GetFrame() & 255) == 0) m_rl.PrintStats(); + // + if((m_perfmon.GetFrame() & 255) == 0) m_rl.PrintStats(); } void ResetDevice() @@ -681,9 +682,4 @@ public: { delete m_tc; } - - GSRasterizer* GetRasterizer() - { - return m_rl.GetHead(); - } }; diff --git a/gsdx/GSdx_vs2008.vcproj b/gsdx/GSdx_vs2008.vcproj index e9f6c2d..117d187 100644 --- a/gsdx/GSdx_vs2008.vcproj +++ b/gsdx/GSdx_vs2008.vcproj @@ -1,7 +1,7 @@ - - - - - - - - - @@ -1262,14 +1238,6 @@ AssemblerOutput="4" /> - - - @@ -1306,14 +1274,6 @@ AssemblerOutput="4" /> - - - - - -