From 96d652e52d9d1b18681395a58e79a5e6295d91ea Mon Sep 17 00:00:00 2001 From: gabest Date: Sat, 27 Dec 2008 13:00:04 +0000 Subject: [PATCH] --- gsdx/GPUDrawScanline.cpp | 5 +- gsdx/GPUDrawScanline.h | 10 +- gsdx/GPURendererSW.h | 13 +- gsdx/GSBlock.h | 62 +- gsdx/GSDrawScanline.cpp | 2945 ++++++++++++++++++++------------------ gsdx/GSDrawScanline.h | 45 +- gsdx/GSLocalMemory.cpp | 61 + gsdx/GSLocalMemory.h | 13 + gsdx/GSRasterizer.cpp | 77 +- gsdx/GSRasterizer.h | 39 +- gsdx/GSRendererSW.h | 32 +- gsdx/GSState.cpp | 7 +- gsdx/GSTables.cpp | 32 +- gsdx/GSTables.h | 32 +- 14 files changed, 1844 insertions(+), 1529 deletions(-) diff --git a/gsdx/GPUDrawScanline.cpp b/gsdx/GPUDrawScanline.cpp index 8ed5ff4..2f23c35 100644 --- a/gsdx/GPUDrawScanline.cpp +++ b/gsdx/GPUDrawScanline.cpp @@ -22,8 +22,9 @@ #include "StdAfx.h" #include "GPUDrawScanline.h" -GPUDrawScanline::GPUDrawScanline(GPUState* state) +GPUDrawScanline::GPUDrawScanline(GPUState* state, int id) : m_state(state) + , m_id(id) { Init(); } @@ -34,7 +35,7 @@ GPUDrawScanline::~GPUDrawScanline() // IDrawScanline -bool GPUDrawScanline::SetupDraw(const GSRasterizerData* data) +bool GPUDrawScanline::BeginDraw(const GSRasterizerData* data) { GPUDrawingEnvironment& env = m_state->m_env; diff --git a/gsdx/GPUDrawScanline.h b/gsdx/GPUDrawScanline.h index 509d26b..562df21 100644 --- a/gsdx/GPUDrawScanline.h +++ b/gsdx/GPUDrawScanline.h @@ -101,18 +101,20 @@ class GPUDrawScanline : public GSAlignedClass<16>, public IDrawScanline protected: GPUState* m_state; - int m_filter; - int m_dither; + int m_id; public: - GPUDrawScanline(GPUState* state); + GPUDrawScanline(GPUState* state, int id); virtual ~GPUDrawScanline(); // IDrawScanline - bool SetupDraw(const GSRasterizerData* data); + bool BeginDraw(const GSRasterizerData* data); + 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/GPURendererSW.h b/gsdx/GPURendererSW.h index 089ad27..2e84a41 100644 --- a/gsdx/GPURendererSW.h +++ b/gsdx/GPURendererSW.h @@ -164,14 +164,15 @@ protected: default: __assume(0); } - int prims = m_rl.Draw(&data); + m_rl.Draw(&data); + + GSRasterizerStats stats; + + m_rl.GetStats(stats); - m_perfmon.Put(GSPerfMon::Prim, prims); m_perfmon.Put(GSPerfMon::Draw, 1); - - int pixels = m_rl.GetPixels(); - - m_perfmon.Put(GSPerfMon::Fillrate, pixels); + m_perfmon.Put(GSPerfMon::Prim, stats.prims); + m_perfmon.Put(GSPerfMon::Fillrate, stats.pixels); // TODO diff --git a/gsdx/GSBlock.h b/gsdx/GSBlock.h index 600b4c1..9c349b9 100644 --- a/gsdx/GSBlock.h +++ b/gsdx/GSBlock.h @@ -96,7 +96,7 @@ public: #else - const DWORD* d = &columnTable32[(i & 3) << 1][0]; + const BYTE* d = &columnTable32[(i & 3) << 1][0]; for(int j = 0; j < 2; j++, d += 8, src += srcpitch) { @@ -138,7 +138,7 @@ public: #else - const DWORD* d = &columnTable16[(i & 3) << 1][0]; + const BYTE* d = &columnTable16[(i & 3) << 1][0]; for(int j = 0; j < 2; j++, d += 16, src += srcpitch) { @@ -182,7 +182,7 @@ public: #else - const DWORD* d = &columnTable8[(i & 3) << 2][0]; + const BYTE* d = &columnTable8[(i & 3) << 2][0]; for(int j = 0; j < 4; j++, d += 16, src += srcpitch) { @@ -229,7 +229,7 @@ public: #else - const DWORD* d = &columnTable4[(i & 3) << 2][0]; + const WORD* d = &columnTable4[(i & 3) << 2][0]; for(int j = 0; j < 4; j++, d += 32, src += srcpitch) { @@ -307,7 +307,7 @@ public: #else - const DWORD* d = &columnTable32[0][0]; + const BYTE* d = &columnTable32[0][0]; for(int j = 0; j < 8; j++, d += 8, src += srcpitch) { @@ -341,7 +341,7 @@ public: #else - const DWORD* d = &columnTable16[0][0]; + const BYTE* d = &columnTable16[0][0]; for(int j = 0; j < 8; j++, d += 16, src += srcpitch) { @@ -368,7 +368,7 @@ public: #else - const DWORD* d = &columnTable8[0][0]; + const BYTE* d = &columnTable8[0][0]; for(int j = 0; j < 16; j++, d += 16, src += srcpitch) { @@ -395,7 +395,7 @@ public: #else - const DWORD* d = &columnTable4[0][0]; + const WORD* d = &columnTable4[0][0]; for(int j = 0; j < 16; j++, d += 32, src += srcpitch) { @@ -434,7 +434,7 @@ public: #else - const DWORD* s = &columnTable32[(i & 3) << 1][0]; + const BYTE* s = &columnTable32[(i & 3) << 1][0]; for(int j = 0; j < 2; j++, s += 8, dst += dstpitch) { @@ -492,7 +492,7 @@ public: #else - const DWORD* s = &columnTable16[(i & 3) << 1][0]; + const BYTE* s = &columnTable16[(i & 3) << 1][0]; for(int j = 0; j < 2; j++, s += 16, dst += dstpitch) { @@ -573,7 +573,7 @@ public: #else - const DWORD* s = &columnTable8[(i & 3) << 2][0]; + const BYTE* s = &columnTable8[(i & 3) << 2][0]; for(int j = 0; j < 4; j++, s += 16, dst += dstpitch) { @@ -660,7 +660,7 @@ public: #else - const DWORD* s = &columnTable4[(i & 3) << 2][0]; + const WORD* s = &columnTable4[(i & 3) << 2][0]; for(int j = 0; j < 4; j++, s += 32, dst += dstpitch) { @@ -738,7 +738,7 @@ public: #else - const DWORD* s = &columnTable32[0][0]; + const BYTE* s = &columnTable32[0][0]; for(int j = 0; j < 8; j++, s += 8, dst += dstpitch) { @@ -765,7 +765,7 @@ public: #else - const DWORD* s = &columnTable16[0][0]; + const BYTE* s = &columnTable16[0][0]; for(int j = 0; j < 8; j++, s += 16, dst += dstpitch) { @@ -792,7 +792,7 @@ public: #else - const DWORD* s = &columnTable8[0][0]; + const BYTE* s = &columnTable8[0][0]; for(int j = 0; j < 16; j++, s += 16, dst += dstpitch) { @@ -819,7 +819,7 @@ public: #else - const DWORD* s = &columnTable4[0][0]; + const WORD* s = &columnTable4[0][0]; for(int j = 0; j < 16; j++, s += 32, dst += dstpitch) { @@ -935,7 +935,7 @@ public: #else - const DWORD* s = &columnTable32[0][0]; + const BYTE* s = &columnTable32[0][0]; for(int j = 0; j < 8; j++, s += 8, dst += dstpitch) { @@ -980,7 +980,7 @@ public: #else - const DWORD* s = &columnTable32[0][0]; + const BYTE* s = &columnTable32[0][0]; for(int j = 0; j < 8; j++, s += 8, dst += dstpitch) { @@ -1023,7 +1023,7 @@ public: #else - const DWORD* s = &columnTable32[0][0]; + const BYTE* s = &columnTable32[0][0]; for(int j = 0; j < 8; j++, s += 8, dst += dstpitch) { @@ -1624,7 +1624,7 @@ public: #else - const DWORD* d = &columnTable32[0][0]; + const BYTE* d = &columnTable32[0][0]; for(int j = 0, diff = srcpitch - 8 * 3; j < 8; j++, src += diff, d += 8) { @@ -1689,7 +1689,7 @@ public: #else - const DWORD* d = &columnTable32[0][0]; + const BYTE* d = &columnTable32[0][0]; for(int j = 0; j < 8; j++, src += srcpitch, dst += 8) { @@ -1816,7 +1816,7 @@ public: #else - const DWORD* d = &columnTable32[0][0]; + const BYTE* d = &columnTable32[0][0]; for(int j = 0; j < 8; j++, d += 8, src += srcpitch) { @@ -1944,7 +1944,7 @@ public: #else - const DWORD* d = &columnTable32[0][0]; + const BYTE* d = &columnTable32[0][0]; for(int j = 0; j < 8; j++, d += 8, src += srcpitch) { @@ -2004,7 +2004,7 @@ public: DWORD TA0 = TEXA.TA0 << 24; - const DWORD* s = &columnTable32[0][0]; + const BYTE* s = &columnTable32[0][0]; for(int j = 0; j < 8; j++, s += 8, dst += dstpitch) { @@ -2082,7 +2082,7 @@ public: #else - const DWORD* s = &columnTable8[0][0]; + const BYTE* s = &columnTable8[0][0]; for(int j = 0; j < 16; j++, s += 16, dst += dstpitch) { @@ -2169,14 +2169,14 @@ public: #else - const DWORD* s = &columnTable4[0][0]; + const WORD* s = &columnTable4[0][0]; for(int j = 0; j < 16; j++, s += 32, dst += dstpitch) { for(int i = 0; i < 16; i++) { - DWORD a0 = s[i * 2 + 0]; - DWORD a1 = s[i * 2 + 1]; + BYTE a0 = s[i * 2 + 0]; + BYTE a1 = s[i * 2 + 1]; BYTE c0 = (src[a0 >> 1] >> ((a0 & 1) << 2)) & 0x0f; BYTE c1 = (src[a1 >> 1] >> ((a1 & 1) << 2)) & 0x0f; @@ -2228,7 +2228,7 @@ public: #else - const DWORD* s = &columnTable32[0][0]; + const BYTE* s = &columnTable32[0][0]; for(int j = 0; j < 8; j++, s += 8, dst += dstpitch) { @@ -2281,7 +2281,7 @@ public: #else - const DWORD* s = &columnTable32[0][0]; + const BYTE* s = &columnTable32[0][0]; for(int j = 0; j < 8; j++, s += 8, dst += dstpitch) { @@ -2334,7 +2334,7 @@ public: #else - const DWORD* s = &columnTable32[0][0]; + const BYTE* s = &columnTable32[0][0]; for(int j = 0; j < 8; j++, s += 8, dst += dstpitch) { diff --git a/gsdx/GSDrawScanline.cpp b/gsdx/GSDrawScanline.cpp index 4f80908..cc07a1c 100644 --- a/gsdx/GSDrawScanline.cpp +++ b/gsdx/GSDrawScanline.cpp @@ -23,22 +23,97 @@ #include "GSDrawScanline.h" #include "GSTextureCacheSW.h" -GSDrawScanline::GSDrawScanline(GSState* state) +GSDrawScanline::GSDrawScanline(GSState* state, int id) : m_state(state) - , m_fbo(NULL) - , m_zbo(NULL) + , m_id(id) { Init(); } GSDrawScanline::~GSDrawScanline() { - FreeOffsets(); + POSITION pos = m_dsmap_active.GetHeadPosition(); + + while(pos) + { + delete m_dsmap_active.GetNextValue(pos); + } + + m_dsmap_active.RemoveAll(); } +void GSDrawScanline::PrintStats() +{ + if(FILE* fp = fopen("c:\\1.txt", "w")) + { + POSITION pos = m_dsmap_active.GetHeadPosition(); + + while(pos) + { + DWORD sel; + ActiveDrawScanlinePtr* p; + + m_dsmap_active.GetNextAssoc(pos, sel, p); + + if(m_dsmap.Lookup(sel)) + { + continue; + } + + if(p->frames > 30) + { + int tpf = (int)((p->ticks / p->frames) * 10000 / (3000000000 / 60)); // 3 GHz, 60 fps + + if(tpf >= 200) + { + _ftprintf(fp, _T("m_dsmap.SetAt(0x%08x, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x%08x>); // %6.2f%%\n"), sel, sel, (float)tpf / 100); + } + } + } + + fclose(fp); + } + + { + __int64 ttpf = 0; + + POSITION pos = m_dsmap_active.GetHeadPosition(); + + while(pos) + { + ActiveDrawScanlinePtr* p = m_dsmap_active.GetNextValue(pos); + + ttpf += p->ticks / p->frames; + } + + pos = m_dsmap_active.GetHeadPosition(); + + while(pos) + { + DWORD sel; + ActiveDrawScanlinePtr* p; + + m_dsmap_active.GetNextAssoc(pos, sel, p); + + if(p->frames > 0) + { + __int64 tpp = p->pixels > 0 ? p->ticks / p->pixels : 0; + __int64 tpf = p->frames > 0 ? p->ticks / p->frames : 0; + __int64 ppf = p->frames > 0 ? p->pixels / p->frames : 0; + + printf("[%08x]%c %6.2f%% | %5.2f%% | f %4I64d | p %10I64d | tpp %4I64d | tpf %8I64d | ppf %7I64d\n", + sel, !m_dsmap.Lookup(sel) ? '*' : ' ', + (float)(tpf * 10000 / 50000000) / 100, + (float)(tpf * 10000 / ttpf) / 100, + p->frames, p->pixels, + tpp, tpf, ppf); + } + } + } +} // IDrawScanline -bool GSDrawScanline::SetupDraw(const GSRasterizerData* data) +bool GSDrawScanline::BeginDraw(const GSRasterizerData* data) { GSDrawingEnvironment& env = m_state->m_env; GSDrawingContext* context = m_state->m_context; @@ -47,14 +122,11 @@ bool GSDrawScanline::SetupDraw(const GSRasterizerData* data) m_env.sel = p->sel; - SetupOffset(m_fbo, context->FRAME.Block(), context->FRAME.FBW, context->FRAME.PSM); - SetupOffset(m_zbo, context->ZBUF.Block(), context->FRAME.FBW, context->ZBUF.PSM); - m_env.vm = p->vm; - m_env.fbr = m_fbo->row; - m_env.zbr = m_zbo->row; - m_env.fbc = m_fbo->col; - m_env.zbc = m_zbo->col; + m_env.fbr = p->fbo->row; + m_env.zbr = p->zbo->row; + m_env.fbc = p->fbo->col; + m_env.zbc = p->zbo->col; m_env.fm = GSVector4i(p->fm); m_env.zm = GSVector4i(p->zm); m_env.datm = GSVector4i(context->TEST.DATM ? 0x80000000 : 0); @@ -152,121 +224,60 @@ bool GSDrawScanline::SetupDraw(const GSRasterizerData* data) // - m_dsf = m_ds[m_env.sel.fpsm][m_env.sel.zpsm][m_env.sel.ztst][m_env.sel.iip]; + m_dsf = NULL; - CRBMap::CPair* pair = m_dsmap2.Lookup(m_env.sel); - - if(pair) + if(!m_dsmap_active.Lookup(m_env.sel, m_dsf)) { - m_dsf = pair->m_value; - } - else - { - static int found = 0; + CRBMap::CPair* pair = m_dsmap.Lookup(m_env.sel); - pair = m_dsmap.Lookup(m_env.sel); + ActiveDrawScanlinePtr* p = new ActiveDrawScanlinePtr(); // TODO: delete in destructor - if(pair && pair->m_value) - { - m_dsf = pair->m_value; + memset(p, 0, sizeof(*p)); - m_dsmap2.SetAt(pair->m_key, pair->m_value); + p->frame = (UINT64)-1; - found++; + p->dsf = pair ? pair->m_value : m_ds[m_env.sel.fpsm][m_env.sel.zpsm][m_env.sel.ztst][m_env.sel.iip]; - } - else if(!pair) - { - _tprintf( - _T("*** [%d,%d] ") - _T("psm %d/%d ztst %d iip %d ") - _T("tfx %d tcc %d fst %d ltf %d tlu %d ") - _T("atst %d afail %d fge %d date %d ") - _T("abe %02x pabe %d rfb %d ") - _T("\n"), - m_dsmap.GetCount(), found, - m_env.sel.fpsm, m_env.sel.zpsm, m_env.sel.ztst, m_env.sel.iip, - m_env.sel.tfx, m_env.sel.tcc, m_env.sel.fst, m_env.sel.ltf, m_env.sel.tlu, - m_env.sel.atst, m_env.sel.afail, m_env.sel.fge, m_env.sel.date, - m_env.sel.abe, m_env.sel.pabe, m_env.sel.rfb); + m_dsmap_active.SetAt(m_env.sel, p); - m_dsmap.SetAt(m_env.sel, NULL); - - if(FILE* fp = _tfopen(_T("c:\\1.txt"), _T("w"))) - { - POSITION pos = m_dsmap.GetHeadPosition(); - - while(pos) - { - pair = m_dsmap.GetNext(pos); - - if(!pair->m_value) - { - _ftprintf(fp, _T("m_dsmap.SetAt(0x%08x, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x%08x>);\n"), pair->m_key, pair->m_key); - } - } - - fclose(fp); - } - } + m_dsf = p; } if(data->primclass == GS_SPRITE_CLASS) { - GIFRegPRIM* PRIM = m_state->PRIM; - bool solid = true; - if(PRIM->IIP || PRIM->TME || PRIM->ABE || PRIM->FGE - || context->TEST.ZTE && context->TEST.ZTST != ZTST_ALWAYS - || context->TEST.ATE && context->TEST.ATST != ATST_ALWAYS - || context->TEST.DATE - || env.DTHE.DTHE - || context->FRAME.FBMSK) - { - solid = false; - } -/* - // TODO - - bool solid2 = true; - 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 - || p->fm != 0 && p->fm != 0xffffffff // TODO: implement masked FillRect - ) + || m_env.sel.date) { - solid2 = false; + solid = false; } - if(solid != solid2) - { - int pixels = 0; - - for(int i = 0; i < data->count; i += 2) - { - const GSVector4& p0 = data->vertices[i + 0].p; - const GSVector4& p1 = data->vertices[i + 1].p; - - GSVector4 v = (p1 - p0).abs(); - - pixels += (int)v.x * (int)v.y; - } - - printf("[%I64d] %d != %d, %08x, %d\n", m_state->m_perfmon.GetFrame(), solid, solid2, p->fm, pixels); - } -*/ return solid; } return false; } +void GSDrawScanline::EndDraw(const GSRasterizerStats& stats) +{ + UINT64 frame = m_state->m_perfmon.GetFrame(); + + if(m_dsf->frame != frame) + { + m_dsf->frame = frame; + m_dsf->frames++; + } + + m_dsf->pixels += stats.pixels; + m_dsf->ticks += stats.ticks; +} + void GSDrawScanline::SetupPrim(GS_PRIM_CLASS primclass, const GSVertexSW* vertices, const GSVertexSW& dscan) { GSVector4 ps0123 = GSVector4::ps0123(); @@ -312,108 +323,178 @@ 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)(top, left, right, v); + (this->*m_dsf->dsf)(top, left, right, v); } void GSDrawScanline::DrawSolidRect(const GSVector4i& r, const GSVertexSW& v) { +/* +static FILE* s_fp = NULL; +if(!s_fp) s_fp = fopen("c:\\log2.txt", "w"); +__int64 start = __rdtsc(); +int size = (r.z - r.x) * (r.w - r.y); +*/ ASSERT(r.y >= 0); ASSERT(r.w >= 0); - GSDrawingContext* context = m_state->m_context; + DWORD m = m_env.fm.u32[0]; - DWORD fbp = context->FRAME.Block(); - DWORD fpsm = context->FRAME.PSM; - DWORD zbp = context->ZBUF.Block(); - DWORD zpsm = context->ZBUF.PSM; - DWORD bw = context->FRAME.FBW; + if(m_env.sel.fpsm == 1) + { + m |= 0xff000000; + } - if(m_env.fm.u32[0] != 0xffffffff) // TODO + if(m != 0xffffffff) { DWORD c = (GSVector4i(v.c) >> 7).rgba32(); - if(context->FBA.FBA) + if(m_state->m_context->FBA.FBA) { c |= 0x80000000; } - if(fpsm == PSM_PSMCT16 || fpsm == PSM_PSMCT16S) + if(m_env.sel.fpsm != 2) + { + if(m == 0) + { + DrawSolidRectT(m_env.fbr, m_env.fbc[0], r, c, m); + } + else + { + DrawSolidRectT(m_env.fbr, m_env.fbc[0], r, c, m); + } + } + else { c = ((c & 0xf8) >> 3) | ((c & 0xf800) >> 6) | ((c & 0xf80000) >> 9) | ((c & 0x80000000) >> 16); - } - m_state->m_mem.FillRect(r, c, fpsm, fbp, bw); + if(m == 0) + { + DrawSolidRectT(m_env.fbr, m_env.fbc[0], r, c, m); + } + else + { + DrawSolidRectT(m_env.fbr, m_env.fbc[0], r, c, m); + } + } } - if(m_env.zm.u32[0] != 0xffffffff) + m = m_env.zm.u32[0]; + + if(m_env.sel.zpsm == 1) { - m_state->m_mem.FillRect(r, (DWORD)(float)v.p.z, zpsm, zbp, bw); + m |= 0xff000000; + } + + if(m != 0xffffffff) + { + DWORD z = (DWORD)(float)v.p.z; + + if(m_env.sel.zpsm != 2) + { + if(m == 0) + { + DrawSolidRectT(m_env.zbr, m_env.zbc[0], r, z, m); + } + else + { + DrawSolidRectT(m_env.zbr, m_env.zbc[0], r, z, m); + } + } + else + { + if(m == 0) + { + DrawSolidRectT(m_env.zbr, m_env.zbc[0], r, z, m); + } + else + { + DrawSolidRectT(m_env.zbr, m_env.zbc[0], r, z, m); + } + } + } +/* +__int64 stop = __rdtsc(); +fprintf(s_fp, "%I64d => %I64d = %I64d (%d,%d - %d,%d) %d\n", start, stop, stop - start, r.x, r.y, r.z, r.w, size); +*/ +} + +template +void GSDrawScanline::DrawSolidRectT(const GSVector4i* row, int* col, const GSVector4i& r, DWORD c, DWORD m) +{ + if(m == 0xffffffff) return; + + GSVector4i color((int)c); + GSVector4i mask((int)m); + + if(sizeof(T) == sizeof(WORD)) + { + color = color.xxzzl().xxzzh(); + mask = mask.xxzzl().xxzzh(); + } + + color = color.andnot(mask); + + GSVector4i bm(8 * 4 / sizeof(T) - 1, 8 - 1); + GSVector4i br = (r + bm).andnot(bm.xyxy()); + + FillRect(row, col, GSVector4i(r.x, r.y, r.z, br.y), color, mask); + FillRect(row, col, GSVector4i(r.x, br.w, r.z, r.w), color, mask); + + if(r.x < br.x || br.z < r.z) + { + FillRect(row, col, GSVector4i(r.x, br.y, br.x, br.w), color, mask); + FillRect(row, col, GSVector4i(br.z, br.y, r.z, br.w), color, mask); + } + + FillBlock(row, col, br, color, mask); +} + +template +void GSDrawScanline::FillRect(const GSVector4i* row, int* col, const GSVector4i& r, const GSVector4i& c, const GSVector4i& m) +{ + if(r.x >= r.z) return; + + for(int y = r.y; y < r.w; y++) + { + DWORD base = row[y].x; + + for(int x = r.x; x < r.z; x++) + { + T* p = &((T*)m_env.vm)[base + col[x]]; + + *p = (T)(!masked ? c.u32[0] : (c.u32[0] | (*p & m.u32[0]))); + } + } +} + +template +void GSDrawScanline::FillBlock(const GSVector4i* row, int* col, const GSVector4i& r, const GSVector4i& c, const GSVector4i& m) +{ + if(r.x >= r.z) return; + + for(int y = r.y; y < r.w; y += 8) + { + DWORD base = row[y].x; + + for(int x = r.x; x < r.z; x += 8 * 4 / sizeof(T)) + { + GSVector4i* p = (GSVector4i*)&((T*)m_env.vm)[base + col[x]]; + + for(int i = 0; i < 16; i += 4) + { + p[i + 0] = !masked ? c : (c | (p[i + 0] & m)); + p[i + 1] = !masked ? c : (c | (p[i + 1] & m)); + p[i + 2] = !masked ? c : (c | (p[i + 2] & m)); + p[i + 3] = !masked ? c : (c | (p[i + 3] & m)); + } + } } } IDrawScanline::DrawScanlinePtr GSDrawScanline::GetDrawScanlinePtr() { - return m_dsf; -} - -void GSDrawScanline::SetupOffset(Offset*& o, DWORD bp, DWORD bw, DWORD psm) -{ - if(bw == 0) {ASSERT(0); return;} - - DWORD hash = bp | (bw << 14) | (psm << 20); - - if(!o || o->hash != hash) - { - CRBMap::CPair* pair = m_omap.Lookup(hash); - - if(pair) - { - o = pair->m_value; - } - else - { - o = (Offset*)_aligned_malloc(sizeof(Offset), 16); - - o->hash = hash; - - GSLocalMemory::pixelAddress pa = GSLocalMemory::m_psm[psm].pa; - - for(int i = 0, j = 1024; i < j; i++) - { - o->row[i] = GSVector4i((int)pa(0, i, bp, bw)); - } - - int* p = (int*)_aligned_malloc(sizeof(int) * (2048 + 3) * 4, 16); - - for(int i = 0; i < 4; i++) - { - o->col[i] = &p[2048 * i + ((4 - (i & 3)) & 3)]; - - memcpy(o->col[i], GSLocalMemory::m_psm[psm].rowOffset[0], sizeof(int) * 2048); - } - - m_omap.SetAt(hash, o); - } - } -} - -void GSDrawScanline::FreeOffsets() -{ - POSITION pos = m_omap.GetHeadPosition(); - - while(pos) - { - Offset* o = m_omap.GetNextValue(pos); - - for(int i = 0; i < countof(o->col); i++) - { - _aligned_free(o->col); - } - - _aligned_free(o); - } - - m_omap.RemoveAll(); + return m_dsf->dsf; } GSVector4i GSDrawScanline::Wrap(const GSVector4i& t) @@ -1068,1319 +1149,1429 @@ void GSDrawScanline::Init() // bios - m_dsmap.SetAt(0x1fe00860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe00860>); - m_dsmap.SetAt(0x1fe04070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04070>); - m_dsmap.SetAt(0x1fe04850, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04850>); - m_dsmap.SetAt(0x1fe04860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04860>); - m_dsmap.SetAt(0x1fe20060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe20060>); - m_dsmap.SetAt(0x1fe20860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe20860>); - m_dsmap.SetAt(0x1fe28864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe28864>); - m_dsmap.SetAt(0x1fe28870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe28870>); - m_dsmap.SetAt(0x1fe38050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe38050>); - m_dsmap.SetAt(0x1fe38060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe38060>); - m_dsmap.SetAt(0x1fe38064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe38064>); - m_dsmap.SetAt(0x1fe38070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe38070>); - m_dsmap.SetAt(0x1fe39050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe39050>); - m_dsmap.SetAt(0x48428050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48428050>); - m_dsmap.SetAt(0x48428060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48428060>); - m_dsmap.SetAt(0x48804860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804860>); - m_dsmap.SetAt(0x48838050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48838050>); - m_dsmap.SetAt(0x48838064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48838064>); - m_dsmap.SetAt(0x48839050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48839050>); - m_dsmap.SetAt(0x49004050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004050>); - m_dsmap.SetAt(0x4902884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4902884c>); - m_dsmap.SetAt(0x4902904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4902904c>); - m_dsmap.SetAt(0x49038050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49038050>); - m_dsmap.SetAt(0x49039050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49039050>); - m_dsmap.SetAt(0x4b02804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b02804c>); - m_dsmap.SetAt(0x4c40404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c40404c>); - m_dsmap.SetAt(0x4c419050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c419050>); - m_dsmap.SetAt(0x4c804050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c804050>); - m_dsmap.SetAt(0x4c804850, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c804850>); - m_dsmap.SetAt(0x4d019050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d019050>); - m_dsmap.SetAt(0x4d028864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d028864>); - m_dsmap.SetAt(0x4d038864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d038864>); + 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% // ffx - m_dsmap.SetAt(0x1fe04055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04055>); - m_dsmap.SetAt(0x1fe11056, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe11056>); - m_dsmap.SetAt(0x1fe68175, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68175>); - m_dsmap.SetAt(0x1fe68975, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68975>); - m_dsmap.SetAt(0x1fe69175, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe69175>); - m_dsmap.SetAt(0x1fe84175, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe84175>); - m_dsmap.SetAt(0x1fe84975, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe84975>); - m_dsmap.SetAt(0x1fee8175, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8175>); - m_dsmap.SetAt(0x1fee8975, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8975>); - m_dsmap.SetAt(0x1fee9175, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee9175>); - m_dsmap.SetAt(0x48404965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48404965>); - m_dsmap.SetAt(0x4847814d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4847814d>); - m_dsmap.SetAt(0x48478165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48478165>); - m_dsmap.SetAt(0x48479165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48479165>); - m_dsmap.SetAt(0x4880404d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4880404d>); - m_dsmap.SetAt(0x48804055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804055>); - m_dsmap.SetAt(0x48804155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804155>); - m_dsmap.SetAt(0x488041cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488041cd>); - m_dsmap.SetAt(0x4880484d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4880484d>); - m_dsmap.SetAt(0x48804855, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804855>); - m_dsmap.SetAt(0x48804965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804965>); - m_dsmap.SetAt(0x488049cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488049cd>); - m_dsmap.SetAt(0x48810055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48810055>); - m_dsmap.SetAt(0x48820965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48820965>); - m_dsmap.SetAt(0x48830075, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48830075>); - m_dsmap.SetAt(0x4883014d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883014d>); - m_dsmap.SetAt(0x48830875, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48830875>); - m_dsmap.SetAt(0x48830965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48830965>); - m_dsmap.SetAt(0x488589cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488589cd>); - m_dsmap.SetAt(0x48868165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868165>); - m_dsmap.SetAt(0x48868965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868965>); - m_dsmap.SetAt(0x4887814d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887814d>); - m_dsmap.SetAt(0x48878165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878165>); - m_dsmap.SetAt(0x488781cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488781cd>); - m_dsmap.SetAt(0x488781e5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488781e5>); - m_dsmap.SetAt(0x488789cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488789cd>); - m_dsmap.SetAt(0x4887914d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887914d>); - m_dsmap.SetAt(0x488791cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488791cd>); - m_dsmap.SetAt(0x488791d5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488791d5>); - m_dsmap.SetAt(0x488791e5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488791e5>); - m_dsmap.SetAt(0x48884965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884965>); - m_dsmap.SetAt(0x488e8165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8165>); - m_dsmap.SetAt(0x488e8965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8965>); - m_dsmap.SetAt(0x488e9165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e9165>); - m_dsmap.SetAt(0x488f81f5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f81f5>); - m_dsmap.SetAt(0x488f89f5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f89f5>); - m_dsmap.SetAt(0x48c04865, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48c04865>); - m_dsmap.SetAt(0x49004165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004165>); - m_dsmap.SetAt(0x490041cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490041cd>); - m_dsmap.SetAt(0x49004865, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004865>); - m_dsmap.SetAt(0x49004965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004965>); - m_dsmap.SetAt(0x490049cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490049cd>); - m_dsmap.SetAt(0x49068165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068165>); - m_dsmap.SetAt(0x49068965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068965>); - m_dsmap.SetAt(0x49069165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49069165>); - m_dsmap.SetAt(0x4907814d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907814d>); - m_dsmap.SetAt(0x49078165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078165>); - m_dsmap.SetAt(0x49078965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078965>); - m_dsmap.SetAt(0x49079165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49079165>); - m_dsmap.SetAt(0x490f89f5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490f89f5>); - m_dsmap.SetAt(0x4c811055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c811055>); - m_dsmap.SetAt(0x4c831065, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c831065>); - m_dsmap.SetAt(0x4d0481e5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d0481e5>); - m_dsmap.SetAt(0x51004155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x51004155>); - m_dsmap.SetAt(0x51004165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x51004165>); - m_dsmap.SetAt(0x51004965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x51004965>); - m_dsmap.SetAt(0x5101004e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5101004e>); - m_dsmap.SetAt(0x51020965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x51020965>); - m_dsmap.SetAt(0x54204055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x54204055>); - m_dsmap.SetAt(0x55204055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x55204055>); - m_dsmap.SetAt(0x1fe78075, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe78075>); - m_dsmap.SetAt(0x1fe78155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe78155>); - m_dsmap.SetAt(0x484049cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x484049cd>); - m_dsmap.SetAt(0x48804875, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804875>); - m_dsmap.SetAt(0x49004075, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004075>); - m_dsmap.SetAt(0x49004875, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004875>); - m_dsmap.SetAt(0x4907914d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907914d>); - m_dsmap.SetAt(0x4c804075, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c804075>); - m_dsmap.SetAt(0x4c804875, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c804875>); - m_dsmap.SetAt(0x4d078075, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d078075>); - m_dsmap.SetAt(0x5100414d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5100414d>); - - // ffxii - - m_dsmap.SetAt(0x1fe0404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe0404c>); - m_dsmap.SetAt(0x1fe04054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04054>); - m_dsmap.SetAt(0x1fe04057, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04057>); - m_dsmap.SetAt(0x1fe3804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3804c>); - m_dsmap.SetAt(0x1fe3904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3904c>); - m_dsmap.SetAt(0x1fe6804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe6804c>); - m_dsmap.SetAt(0x1fe68164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68164>); - m_dsmap.SetAt(0x1fe6884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe6884c>); - m_dsmap.SetAt(0x1fe68964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68964>); - m_dsmap.SetAt(0x1fe84164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe84164>); - m_dsmap.SetAt(0x1fe84964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe84964>); - m_dsmap.SetAt(0x1fec8064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fec8064>); - m_dsmap.SetAt(0x1fec8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fec8864>); - m_dsmap.SetAt(0x1fee8164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8164>); - m_dsmap.SetAt(0x1fee8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8864>); - m_dsmap.SetAt(0x1fee8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8964>); - m_dsmap.SetAt(0x48404064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48404064>); - m_dsmap.SetAt(0x4847004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4847004c>); - m_dsmap.SetAt(0x4880404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4880404c>); - m_dsmap.SetAt(0x48804064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804064>); - m_dsmap.SetAt(0x4880484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4880484c>); - m_dsmap.SetAt(0x48828064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48828064>); - m_dsmap.SetAt(0x48828864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48828864>); - m_dsmap.SetAt(0x4883004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883004c>); - m_dsmap.SetAt(0x4883084c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883084c>); - m_dsmap.SetAt(0x4883804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883804c>); - m_dsmap.SetAt(0x4883884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883884c>); - m_dsmap.SetAt(0x4883904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883904c>); - m_dsmap.SetAt(0x4885804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885804c>); - m_dsmap.SetAt(0x4885904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885904c>); - m_dsmap.SetAt(0x4886804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886804c>); - m_dsmap.SetAt(0x48868064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868064>); - m_dsmap.SetAt(0x48868364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868364>); - m_dsmap.SetAt(0x4886884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886884c>); - m_dsmap.SetAt(0x48868864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868864>); - m_dsmap.SetAt(0x48868b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868b64>); - m_dsmap.SetAt(0x48869064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48869064>); - m_dsmap.SetAt(0x4887004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887004c>); - m_dsmap.SetAt(0x4887084c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887084c>); - m_dsmap.SetAt(0x4887804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887804c>); - m_dsmap.SetAt(0x48878064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878064>); - m_dsmap.SetAt(0x48878364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878364>); - m_dsmap.SetAt(0x4887884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887884c>); - m_dsmap.SetAt(0x4887904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887904c>); - m_dsmap.SetAt(0x48879064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879064>); - m_dsmap.SetAt(0x48884064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884064>); - m_dsmap.SetAt(0x488c8364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488c8364>); - m_dsmap.SetAt(0x488c8b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488c8b64>); - m_dsmap.SetAt(0x488e8064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8064>); - m_dsmap.SetAt(0x488e8364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8364>); - m_dsmap.SetAt(0x488e8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8864>); - m_dsmap.SetAt(0x488e8b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8b64>); - m_dsmap.SetAt(0x48904064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48904064>); - m_dsmap.SetAt(0x48c0404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48c0404c>); - m_dsmap.SetAt(0x48c6804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48c6804c>); - m_dsmap.SetAt(0x48c6904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48c6904c>); - m_dsmap.SetAt(0x48c7804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48c7804c>); - m_dsmap.SetAt(0x48c7884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48c7884c>); - m_dsmap.SetAt(0x49004064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004064>); - m_dsmap.SetAt(0x4900484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4900484c>); - m_dsmap.SetAt(0x49004864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004864>); - m_dsmap.SetAt(0x4903804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4903804c>); - m_dsmap.SetAt(0x4905804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4905804c>); - m_dsmap.SetAt(0x49068064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068064>); - m_dsmap.SetAt(0x49068364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068364>); - m_dsmap.SetAt(0x4906884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4906884c>); - m_dsmap.SetAt(0x49068864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068864>); - m_dsmap.SetAt(0x49068b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068b64>); - m_dsmap.SetAt(0x4907804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907804c>); - m_dsmap.SetAt(0x49078064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078064>); - m_dsmap.SetAt(0x49078364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078364>); - m_dsmap.SetAt(0x4907884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907884c>); - m_dsmap.SetAt(0x490e8b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8b64>); - m_dsmap.SetAt(0x49268064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49268064>); - m_dsmap.SetAt(0x49278064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49278064>); - m_dsmap.SetAt(0x4b00404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b00404c>); - m_dsmap.SetAt(0x5fe0404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe0404c>); - m_dsmap.SetAt(0x5fe04064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe04064>); - m_dsmap.SetAt(0x5ff0404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5ff0404c>); + 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% // ffx-2 - m_dsmap.SetAt(0x1fe0404d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe0404d>); - m_dsmap.SetAt(0x1fe0414d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe0414d>); - m_dsmap.SetAt(0x1fe1004e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe1004e>); - m_dsmap.SetAt(0x1fe30069, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe30069>); - m_dsmap.SetAt(0x1fee8165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8165>); - m_dsmap.SetAt(0x1fee8965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8965>); - m_dsmap.SetAt(0x4840414d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4840414d>); - m_dsmap.SetAt(0x48404155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48404155>); - m_dsmap.SetAt(0x48468165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48468165>); - m_dsmap.SetAt(0x48468965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48468965>); - m_dsmap.SetAt(0x48478965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48478965>); - m_dsmap.SetAt(0x488041e5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488041e5>); - m_dsmap.SetAt(0x4880494d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4880494d>); - m_dsmap.SetAt(0x488049f5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488049f5>); - m_dsmap.SetAt(0x4881004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881004d>); - m_dsmap.SetAt(0x4881894d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881894d>); - m_dsmap.SetAt(0x48820165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48820165>); - m_dsmap.SetAt(0x48820875, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48820875>); - m_dsmap.SetAt(0x48830155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48830155>); - m_dsmap.SetAt(0x4883904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883904d>); - m_dsmap.SetAt(0x4885004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885004d>); - m_dsmap.SetAt(0x4885814d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885814d>); - m_dsmap.SetAt(0x488581cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488581cd>); - m_dsmap.SetAt(0x488581e5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488581e5>); - m_dsmap.SetAt(0x488591cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488591cd>); - m_dsmap.SetAt(0x488591d5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488591d5>); - m_dsmap.SetAt(0x48869165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48869165>); - m_dsmap.SetAt(0x48878074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878074>); - m_dsmap.SetAt(0x488781f5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488781f5>); - m_dsmap.SetAt(0x48878874, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878874>); - m_dsmap.SetAt(0x48878965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878965>); - m_dsmap.SetAt(0x488789f5, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488789f5>); - m_dsmap.SetAt(0x48879165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879165>); - m_dsmap.SetAt(0x49004059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004059>); - m_dsmap.SetAt(0x49004155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004155>); - m_dsmap.SetAt(0x49004859, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004859>); - m_dsmap.SetAt(0x49004869, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004869>); - m_dsmap.SetAt(0x4900494d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4900494d>); - m_dsmap.SetAt(0x4901004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4901004d>); - m_dsmap.SetAt(0x490581cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490581cd>); - m_dsmap.SetAt(0x49059155, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49059155>); - m_dsmap.SetAt(0x490591cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490591cd>); - m_dsmap.SetAt(0x4906814d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4906814d>); - m_dsmap.SetAt(0x490781cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490781cd>); - m_dsmap.SetAt(0x490791cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490791cd>); - m_dsmap.SetAt(0x490e8165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8165>); - m_dsmap.SetAt(0x490e8965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8965>); - m_dsmap.SetAt(0x4c80404d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c80404d>); - m_dsmap.SetAt(0x4c804055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c804055>); - m_dsmap.SetAt(0x4c81004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c81004d>); - m_dsmap.SetAt(0x4c850055, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c850055>); - m_dsmap.SetAt(0x4d020965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d020965>); - m_dsmap.SetAt(0x4d068965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068965>); - m_dsmap.SetAt(0x51068165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x51068165>); - m_dsmap.SetAt(0x51068965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x51068965>); - m_dsmap.SetAt(0x510a8165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x510a8165>); - m_dsmap.SetAt(0x510a8965, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x510a8965>); - m_dsmap.SetAt(0x5520404d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5520404d>); - m_dsmap.SetAt(0x5fe0414d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe0414d>); - m_dsmap.SetAt(0x5fe0494d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe0494d>); - m_dsmap.SetAt(0x5fe1004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe1004d>); - m_dsmap.SetAt(0x5fe5884d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe5884d>); - m_dsmap.SetAt(0x5fe5894d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe5894d>); - m_dsmap.SetAt(0x5fe5914d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe5914d>); + 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% + + // 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% // kingdom hearts - m_dsmap.SetAt(0x1fe0484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe0484c>); - m_dsmap.SetAt(0x1fe1804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe1804c>); - m_dsmap.SetAt(0x1fe3004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3004d>); - m_dsmap.SetAt(0x1fe30054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe30054>); - m_dsmap.SetAt(0x1fe3804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3804d>); - m_dsmap.SetAt(0x1fe3904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3904d>); - m_dsmap.SetAt(0x1fe39054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe39054>); - m_dsmap.SetAt(0x1fee9164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee9164>); - m_dsmap.SetAt(0x4840414c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4840414c>); - m_dsmap.SetAt(0x4846814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4846814c>); - m_dsmap.SetAt(0x48468174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48468174>); - m_dsmap.SetAt(0x48468974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48468974>); - m_dsmap.SetAt(0x4847814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4847814c>); - m_dsmap.SetAt(0x48478174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48478174>); - m_dsmap.SetAt(0x48478974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48478974>); - m_dsmap.SetAt(0x48804054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804054>); - m_dsmap.SetAt(0x4880414c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4880414c>); - m_dsmap.SetAt(0x4880494c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4880494c>); - m_dsmap.SetAt(0x48804974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804974>); - m_dsmap.SetAt(0x4881004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881004c>); - m_dsmap.SetAt(0x48818054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48818054>); - m_dsmap.SetAt(0x48819054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48819054>); - m_dsmap.SetAt(0x48829164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48829164>); - m_dsmap.SetAt(0x48830054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48830054>); - m_dsmap.SetAt(0x48830164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48830164>); - m_dsmap.SetAt(0x48858054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48858054>); - m_dsmap.SetAt(0x48858854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48858854>); - m_dsmap.SetAt(0x48859054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48859054>); - m_dsmap.SetAt(0x4886814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886814c>); - m_dsmap.SetAt(0x48868154, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868154>); - m_dsmap.SetAt(0x48868174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868174>); - m_dsmap.SetAt(0x48868974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868974>); - m_dsmap.SetAt(0x48878054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878054>); - m_dsmap.SetAt(0x4887814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887814c>); - m_dsmap.SetAt(0x48878154, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878154>); - m_dsmap.SetAt(0x48878174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878174>); - m_dsmap.SetAt(0x48878854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878854>); - m_dsmap.SetAt(0x4887894c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887894c>); - m_dsmap.SetAt(0x48879054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879054>); - m_dsmap.SetAt(0x4887914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887914c>); - m_dsmap.SetAt(0x488a8168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488a8168>); - m_dsmap.SetAt(0x488e80e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e80e4>); - m_dsmap.SetAt(0x488e8164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8164>); - m_dsmap.SetAt(0x488e8168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8168>); - m_dsmap.SetAt(0x488e88e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e88e4>); - m_dsmap.SetAt(0x488e8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8964>); - m_dsmap.SetAt(0x488e90e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e90e4>); - m_dsmap.SetAt(0x488e9164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e9164>); - m_dsmap.SetAt(0x488e9168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e9168>); - m_dsmap.SetAt(0x48c68174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48c68174>); - m_dsmap.SetAt(0x48c68974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48c68974>); - m_dsmap.SetAt(0x49004054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004054>); - m_dsmap.SetAt(0x4900414c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4900414c>); - m_dsmap.SetAt(0x49058054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49058054>); - m_dsmap.SetAt(0x49059054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49059054>); - m_dsmap.SetAt(0x49068174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068174>); - m_dsmap.SetAt(0x4906894c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4906894c>); - m_dsmap.SetAt(0x49068974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068974>); - m_dsmap.SetAt(0x49078054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078054>); - m_dsmap.SetAt(0x4907814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907814c>); - m_dsmap.SetAt(0x49078174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078174>); - m_dsmap.SetAt(0x4907894c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907894c>); - m_dsmap.SetAt(0x49078974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078974>); - m_dsmap.SetAt(0x49079174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49079174>); - m_dsmap.SetAt(0x490e814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e814c>); - m_dsmap.SetAt(0x490e894c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e894c>); - m_dsmap.SetAt(0x490e8974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8974>); - m_dsmap.SetAt(0x5020404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5020404c>); - m_dsmap.SetAt(0x5fe04058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe04058>); - m_dsmap.SetAt(0x5fe04168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe04168>); - m_dsmap.SetAt(0x5fe3804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe3804c>); - m_dsmap.SetAt(0x5fe3904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe3904c>); - m_dsmap.SetAt(0x5fea8168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fea8168>); + 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% // kingdom hearts 2 - m_dsmap.SetAt(0x1fe04050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04050>); - m_dsmap.SetAt(0x1fe31054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe31054>); - m_dsmap.SetAt(0x1fe3914d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3914d>); - m_dsmap.SetAt(0x40478174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x40478174>); - m_dsmap.SetAt(0x40c78174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x40c78174>); - m_dsmap.SetAt(0x48478054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48478054>); - m_dsmap.SetAt(0x48478854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48478854>); - m_dsmap.SetAt(0x48804160, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804160>); - m_dsmap.SetAt(0x48810054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48810054>); - m_dsmap.SetAt(0x4883814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883814c>); - m_dsmap.SetAt(0x4883914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883914c>); - m_dsmap.SetAt(0x4885884d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885884d>); - m_dsmap.SetAt(0x4887804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887804d>); - m_dsmap.SetAt(0x4887884d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887884d>); - m_dsmap.SetAt(0x48879154, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879154>); - m_dsmap.SetAt(0x488a8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488a8964>); - m_dsmap.SetAt(0x49004974, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004974>); - m_dsmap.SetAt(0x4907804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907804d>); - m_dsmap.SetAt(0x4907884d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907884d>); - m_dsmap.SetAt(0x49078854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078854>); - m_dsmap.SetAt(0x4907904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907904d>); - m_dsmap.SetAt(0x49079054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49079054>); - m_dsmap.SetAt(0x490e8164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8164>); - m_dsmap.SetAt(0x490e8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8964>); - m_dsmap.SetAt(0x4ac78174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4ac78174>); - m_dsmap.SetAt(0x4c83004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c83004d>); - m_dsmap.SetAt(0x4d03004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d03004d>); - m_dsmap.SetAt(0x50c68174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x50c68174>); - m_dsmap.SetAt(0x54478174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x54478174>); - m_dsmap.SetAt(0x5fe68174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe68174>); - m_dsmap.SetAt(0x5fe78174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe78174>); - m_dsmap.SetAt(0x48830074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48830074>); - m_dsmap.SetAt(0x48830874, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48830874>); - m_dsmap.SetAt(0x4887904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887904d>); - m_dsmap.SetAt(0x48879074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879074>); - m_dsmap.SetAt(0x4888404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4888404c>); - m_dsmap.SetAt(0x488a8164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488a8164>); - m_dsmap.SetAt(0x49038174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49038174>); - m_dsmap.SetAt(0x49084174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49084174>); - m_dsmap.SetAt(0x4c084174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c084174>); - m_dsmap.SetAt(0x50884174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x50884174>); - m_dsmap.SetAt(0x5fe04174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe04174>); - m_dsmap.SetAt(0x5fe2b174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe2b174>); - m_dsmap.SetAt(0x5fe3b174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe3b174>); + 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% // persona 3 - m_dsmap.SetAt(0x1fe04058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04058>); - m_dsmap.SetAt(0x1fe0405b, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe0405b>); - m_dsmap.SetAt(0x1fe04068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04068>); - m_dsmap.SetAt(0x1fe04368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04368>); - m_dsmap.SetAt(0x1fe82368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe82368>); - m_dsmap.SetAt(0x1fe84068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe84068>); - m_dsmap.SetAt(0x1fe84368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe84368>); - m_dsmap.SetAt(0x1fe84868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe84868>); - m_dsmap.SetAt(0x4840404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4840404c>); - m_dsmap.SetAt(0x4840484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4840484c>); - m_dsmap.SetAt(0x484e8068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x484e8068>); - m_dsmap.SetAt(0x48804068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804068>); - m_dsmap.SetAt(0x48804368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804368>); - m_dsmap.SetAt(0x48804868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804868>); - m_dsmap.SetAt(0x4881834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881834c>); - m_dsmap.SetAt(0x4881884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881884c>); - m_dsmap.SetAt(0x4881934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881934c>); - m_dsmap.SetAt(0x48820368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48820368>); - m_dsmap.SetAt(0x48848b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48848b68>); - m_dsmap.SetAt(0x48858368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48858368>); - m_dsmap.SetAt(0x48858b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48858b68>); - m_dsmap.SetAt(0x48859368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48859368>); - m_dsmap.SetAt(0x48868068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868068>); - m_dsmap.SetAt(0x48868368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868368>); - m_dsmap.SetAt(0x48868b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868b68>); - m_dsmap.SetAt(0x48878068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878068>); - m_dsmap.SetAt(0x4887834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887834c>); - m_dsmap.SetAt(0x48878368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878368>); - m_dsmap.SetAt(0x48878b4c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878b4c>); - m_dsmap.SetAt(0x48878b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878b68>); - m_dsmap.SetAt(0x4887934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887934c>); - m_dsmap.SetAt(0x48879368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879368>); - m_dsmap.SetAt(0x48884068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884068>); - m_dsmap.SetAt(0x48884368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884368>); - m_dsmap.SetAt(0x48884868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884868>); - m_dsmap.SetAt(0x48892368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48892368>); - m_dsmap.SetAt(0x488b2368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488b2368>); - m_dsmap.SetAt(0x488e8068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8068>); - m_dsmap.SetAt(0x488e8368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8368>); - m_dsmap.SetAt(0x488e8868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8868>); - m_dsmap.SetAt(0x488e8b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8b68>); - m_dsmap.SetAt(0x488e8f68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8f68>); - m_dsmap.SetAt(0x488e9368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e9368>); - m_dsmap.SetAt(0x488f8868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f8868>); - m_dsmap.SetAt(0x488f8b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f8b68>); - m_dsmap.SetAt(0x4900404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4900404c>); - m_dsmap.SetAt(0x49068068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068068>); - m_dsmap.SetAt(0x49068868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068868>); - m_dsmap.SetAt(0x49078068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078068>); - m_dsmap.SetAt(0x49078868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078868>); - m_dsmap.SetAt(0x4907904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907904c>); - m_dsmap.SetAt(0x49079068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49079068>); - m_dsmap.SetAt(0x490e8068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8068>); - m_dsmap.SetAt(0x490e8868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8868>); - m_dsmap.SetAt(0x490f8068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490f8068>); - m_dsmap.SetAt(0x4a43004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a43004c>); - m_dsmap.SetAt(0x4a83004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a83004c>); - m_dsmap.SetAt(0x4a87934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a87934c>); - m_dsmap.SetAt(0x4b03004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b03004c>); - m_dsmap.SetAt(0x4b07934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b07934c>); - m_dsmap.SetAt(0x4c8689e8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8689e8>); - m_dsmap.SetAt(0x4d0e8068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d0e8068>); - m_dsmap.SetAt(0x4d0e8868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d0e8868>); - m_dsmap.SetAt(0x4d47834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d47834c>); - m_dsmap.SetAt(0x4d478b4c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d478b4c>); - m_dsmap.SetAt(0x4d47934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d47934c>); + 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% // persona 4 - m_dsmap.SetAt(0x1fe04858, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04858>); - m_dsmap.SetAt(0x1fe04b4c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04b4c>); - m_dsmap.SetAt(0x48804058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804058>); - m_dsmap.SetAt(0x48804b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804b68>); - m_dsmap.SetAt(0x48828368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48828368>); - m_dsmap.SetAt(0x48828b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48828b68>); - m_dsmap.SetAt(0x48830168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48830168>); - m_dsmap.SetAt(0x48868868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868868>); - m_dsmap.SetAt(0x48868f68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868f68>); - m_dsmap.SetAt(0x48869368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48869368>); - m_dsmap.SetAt(0x48879168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879168>); - m_dsmap.SetAt(0x48884b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884b68>); - m_dsmap.SetAt(0x488f8368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f8368>); - m_dsmap.SetAt(0x49004068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004068>); - m_dsmap.SetAt(0x49004868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004868>); - m_dsmap.SetAt(0x4903004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4903004c>); - m_dsmap.SetAt(0x49084068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49084068>); - m_dsmap.SetAt(0x49084868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49084868>); - m_dsmap.SetAt(0x4a47804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a47804c>); - m_dsmap.SetAt(0x4a47904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a47904c>); - m_dsmap.SetAt(0x4a80404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a80404c>); - m_dsmap.SetAt(0x4a87834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a87834c>); - m_dsmap.SetAt(0x4a878368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a878368>); - m_dsmap.SetAt(0x4a878b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a878b68>); - m_dsmap.SetAt(0x4a879068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a879068>); - m_dsmap.SetAt(0x4b004968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b004968>); - m_dsmap.SetAt(0x4b07804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b07804c>); - m_dsmap.SetAt(0x4b07884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b07884c>); - m_dsmap.SetAt(0x4d080068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d080068>); - m_dsmap.SetAt(0x5fe04068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe04068>); - m_dsmap.SetAt(0x5fe04858, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe04858>); - m_dsmap.SetAt(0x5ff0484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5ff0484c>); + 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% // sfex3 - m_dsmap.SetAt(0x1fe04868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04868>); - m_dsmap.SetAt(0x1fe04878, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04878>); - m_dsmap.SetAt(0x1fe3004e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3004e>); - m_dsmap.SetAt(0x1fe39178, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe39178>); - m_dsmap.SetAt(0x1fe6b168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe6b168>); - m_dsmap.SetAt(0x1fe6b968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe6b968>); - m_dsmap.SetAt(0x41268068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x41268068>); - m_dsmap.SetAt(0x41268868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x41268868>); - m_dsmap.SetAt(0x41269068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x41269068>); - m_dsmap.SetAt(0x485041cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x485041cc>); - m_dsmap.SetAt(0x485049cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x485049cc>); - m_dsmap.SetAt(0x4856b1cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4856b1cc>); - m_dsmap.SetAt(0x4856b9cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4856b9cc>); - m_dsmap.SetAt(0x48804158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804158>); - m_dsmap.SetAt(0x48804178, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804178>); - m_dsmap.SetAt(0x48804978, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804978>); - m_dsmap.SetAt(0x4885814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885814c>); - m_dsmap.SetAt(0x48858158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48858158>); - m_dsmap.SetAt(0x48859078, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48859078>); - m_dsmap.SetAt(0x4885914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885914c>); - m_dsmap.SetAt(0x48859158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48859158>); - m_dsmap.SetAt(0x48868168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868168>); - m_dsmap.SetAt(0x48868178, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868178>); - m_dsmap.SetAt(0x48868968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868968>); - m_dsmap.SetAt(0x48868978, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868978>); - m_dsmap.SetAt(0x4886b168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886b168>); - m_dsmap.SetAt(0x4886b178, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886b178>); - m_dsmap.SetAt(0x4886b968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886b968>); - m_dsmap.SetAt(0x4886b978, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886b978>); - m_dsmap.SetAt(0x48878158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878158>); - m_dsmap.SetAt(0x48879158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879158>); - m_dsmap.SetAt(0x49004178, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004178>); - m_dsmap.SetAt(0x490041f8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490041f8>); - m_dsmap.SetAt(0x49004878, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004878>); - m_dsmap.SetAt(0x49004978, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004978>); - m_dsmap.SetAt(0x490049f8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490049f8>); - m_dsmap.SetAt(0x49068078, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068078>); - m_dsmap.SetAt(0x49068178, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068178>); - m_dsmap.SetAt(0x49068978, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068978>); - m_dsmap.SetAt(0x49078078, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078078>); - m_dsmap.SetAt(0x49078178, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078178>); - m_dsmap.SetAt(0x490781f8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490781f8>); - m_dsmap.SetAt(0x490789f8, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490789f8>); - m_dsmap.SetAt(0x49079178, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49079178>); - m_dsmap.SetAt(0x4c80404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c80404c>); - m_dsmap.SetAt(0x4c804158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c804158>); - m_dsmap.SetAt(0x4c80484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c80484c>); - m_dsmap.SetAt(0x4c85814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c85814c>); - m_dsmap.SetAt(0x4c85914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c85914c>); - m_dsmap.SetAt(0x4c859158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c859158>); - m_dsmap.SetAt(0x4c868068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c868068>); - m_dsmap.SetAt(0x4c868868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c868868>); - m_dsmap.SetAt(0x4d068168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068168>); - m_dsmap.SetAt(0x4d06b168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d06b168>); - m_dsmap.SetAt(0x4d06b968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d06b968>); - m_dsmap.SetAt(0x4d404058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d404058>); + 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% // gt4 - m_dsmap.SetAt(0x1fe0404e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe0404e>); - m_dsmap.SetAt(0x1fe04064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04064>); - m_dsmap.SetAt(0x1fe1904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe1904c>); - m_dsmap.SetAt(0x1fe1904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe1904d>); - m_dsmap.SetAt(0x1fe3904e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3904e>); - m_dsmap.SetAt(0x1fe7804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe7804d>); - m_dsmap.SetAt(0x1fe7904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe7904c>); - m_dsmap.SetAt(0x1fe7904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe7904d>); - m_dsmap.SetAt(0x1fec8164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fec8164>); - m_dsmap.SetAt(0x1fec8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fec8964>); - m_dsmap.SetAt(0x1fec9164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fec9164>); - m_dsmap.SetAt(0x1fecb964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fecb964>); - m_dsmap.SetAt(0x1fee8064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8064>); - m_dsmap.SetAt(0x1feeb964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1feeb964>); - m_dsmap.SetAt(0x488181d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488181d4>); - m_dsmap.SetAt(0x488191d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488191d4>); - m_dsmap.SetAt(0x4883804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883804d>); - m_dsmap.SetAt(0x4885804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885804d>); - m_dsmap.SetAt(0x4885904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885904d>); - m_dsmap.SetAt(0x4886884d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886884d>); - m_dsmap.SetAt(0x48878065, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878065>); - m_dsmap.SetAt(0x48878865, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878865>); - m_dsmap.SetAt(0x488a8064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488a8064>); - m_dsmap.SetAt(0x488a8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488a8864>); - m_dsmap.SetAt(0x488c8064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488c8064>); - m_dsmap.SetAt(0x488c8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488c8864>); - m_dsmap.SetAt(0x488e804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e804c>); - m_dsmap.SetAt(0x488e8065, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8065>); - m_dsmap.SetAt(0x488e8764, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8764>); - m_dsmap.SetAt(0x488e8865, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8865>); - m_dsmap.SetAt(0x488e8f64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8f64>); - m_dsmap.SetAt(0x488e9764, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e9764>); - m_dsmap.SetAt(0x488eb064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488eb064>); - m_dsmap.SetAt(0x488eb864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488eb864>); - m_dsmap.SetAt(0x490e8064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8064>); - m_dsmap.SetAt(0x490e8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8864>); - m_dsmap.SetAt(0x4b03804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b03804c>); - m_dsmap.SetAt(0x4b0a8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b0a8864>); - m_dsmap.SetAt(0x4b0e8064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b0e8064>); - m_dsmap.SetAt(0x4b0e8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b0e8864>); - m_dsmap.SetAt(0x4b1a8064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b1a8064>); - m_dsmap.SetAt(0x4b1a8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b1a8864>); - m_dsmap.SetAt(0x4c80484d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c80484d>); - m_dsmap.SetAt(0x4c81804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c81804c>); - m_dsmap.SetAt(0x4c81904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c81904c>); - m_dsmap.SetAt(0x4c81904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c81904d>); - m_dsmap.SetAt(0x4c83804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c83804d>); - m_dsmap.SetAt(0x4c83904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c83904c>); - m_dsmap.SetAt(0x4c83904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c83904d>); - m_dsmap.SetAt(0x4c87904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c87904d>); - m_dsmap.SetAt(0x4d05804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d05804c>); - m_dsmap.SetAt(0x5520404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5520404c>); - m_dsmap.SetAt(0x5520410c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5520410c>); - m_dsmap.SetAt(0x5fe0404d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe0404d>); - m_dsmap.SetAt(0x5fe1904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe1904c>); - m_dsmap.SetAt(0x5fe1914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe1914c>); - m_dsmap.SetAt(0x5fe2884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe2884c>); - m_dsmap.SetAt(0x5fe2884e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe2884e>); - m_dsmap.SetAt(0x5fe3904e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe3904e>); - m_dsmap.SetAt(0x5fe5804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe5804c>); - m_dsmap.SetAt(0x5fe5904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe5904c>); - m_dsmap.SetAt(0x5fe5904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe5904d>); - m_dsmap.SetAt(0x5fee8064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fee8064>); - m_dsmap.SetAt(0x5fee8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fee8864>); - m_dsmap.SetAt(0x5fee9064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fee9064>); + 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% // katamary damacy - m_dsmap.SetAt(0x1fe04056, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04056>); - m_dsmap.SetAt(0x488041d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488041d4>); - m_dsmap.SetAt(0x488041e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488041e4>); - m_dsmap.SetAt(0x48804864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804864>); - m_dsmap.SetAt(0x4881004e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881004e>); - m_dsmap.SetAt(0x4881804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881804d>); - m_dsmap.SetAt(0x488181cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488181cc>); - m_dsmap.SetAt(0x488181e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488181e4>); - m_dsmap.SetAt(0x4881904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881904d>); - m_dsmap.SetAt(0x488301cd, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488301cd>); - m_dsmap.SetAt(0x488301e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488301e4>); - m_dsmap.SetAt(0x488581d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488581d4>); - m_dsmap.SetAt(0x488581e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488581e4>); - m_dsmap.SetAt(0x488591d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488591d4>); - m_dsmap.SetAt(0x488591e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488591e4>); - m_dsmap.SetAt(0x488681e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488681e4>); - m_dsmap.SetAt(0x488691e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488691e4>); - m_dsmap.SetAt(0x48884864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884864>); - m_dsmap.SetAt(0x488e81e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e81e4>); - m_dsmap.SetAt(0x488e89e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e89e4>); - m_dsmap.SetAt(0x488e9064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e9064>); - m_dsmap.SetAt(0x488e91d4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e91d4>); - m_dsmap.SetAt(0x488e91e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e91e4>); - m_dsmap.SetAt(0x488f8064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f8064>); - m_dsmap.SetAt(0x488f81e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f81e4>); - m_dsmap.SetAt(0x488f9064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f9064>); - m_dsmap.SetAt(0x48904054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48904054>); - m_dsmap.SetAt(0x489e91cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x489e91cc>); - m_dsmap.SetAt(0x489f91cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x489f91cc>); - m_dsmap.SetAt(0x490581e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490581e4>); - m_dsmap.SetAt(0x490591e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490591e4>); - m_dsmap.SetAt(0x490681cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490681cc>); - m_dsmap.SetAt(0x490681e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490681e4>); - m_dsmap.SetAt(0x490689cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490689cc>); - m_dsmap.SetAt(0x490689e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490689e4>); - m_dsmap.SetAt(0x490691cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490691cc>); - m_dsmap.SetAt(0x490691e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490691e4>); - m_dsmap.SetAt(0x490781cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490781cc>); - m_dsmap.SetAt(0x490781e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490781e4>); - m_dsmap.SetAt(0x490791cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490791cc>); - m_dsmap.SetAt(0x490791e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490791e4>); - m_dsmap.SetAt(0x490a09e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490a09e4>); - m_dsmap.SetAt(0x490e81cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e81cc>); - m_dsmap.SetAt(0x490e81e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e81e4>); - m_dsmap.SetAt(0x490e89e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e89e4>); - m_dsmap.SetAt(0x490e91e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e91e4>); - m_dsmap.SetAt(0x50258154, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x50258154>); - m_dsmap.SetAt(0x502691e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x502691e4>); - m_dsmap.SetAt(0x502791e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x502791e4>); - m_dsmap.SetAt(0x5fe04054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe04054>); + 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% // grandia 3 - m_dsmap.SetAt(0x41268060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x41268060>); - m_dsmap.SetAt(0x484e8860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x484e8860>); - m_dsmap.SetAt(0x48868360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868360>); - m_dsmap.SetAt(0x48868760, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868760>); - m_dsmap.SetAt(0x48868870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868870>); - m_dsmap.SetAt(0x48868b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868b60>); - m_dsmap.SetAt(0x48868f60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868f60>); - m_dsmap.SetAt(0x48869760, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48869760>); - m_dsmap.SetAt(0x48878760, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878760>); - m_dsmap.SetAt(0x48879760, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879760>); - m_dsmap.SetAt(0x488e8360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8360>); - m_dsmap.SetAt(0x488e8870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8870>); - m_dsmap.SetAt(0x488e8b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8b60>); - m_dsmap.SetAt(0x488e8f60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8f60>); - m_dsmap.SetAt(0x488f8f60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f8f60>); - m_dsmap.SetAt(0x48984070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48984070>); - m_dsmap.SetAt(0x49004060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004060>); - m_dsmap.SetAt(0x49004860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004860>); - m_dsmap.SetAt(0x4906804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4906804c>); - m_dsmap.SetAt(0x49068860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068860>); - m_dsmap.SetAt(0x49078060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078060>); - m_dsmap.SetAt(0x49078070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078070>); - m_dsmap.SetAt(0x49078860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078860>); - m_dsmap.SetAt(0x49078870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078870>); - m_dsmap.SetAt(0x49079060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49079060>); - m_dsmap.SetAt(0x490e8860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8860>); - m_dsmap.SetAt(0x4c839060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c839060>); - m_dsmap.SetAt(0x50368060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x50368060>); - m_dsmap.SetAt(0x1fe0405a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe0405a>); - m_dsmap.SetAt(0x48868070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868070>); - m_dsmap.SetAt(0x48869070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48869070>); - m_dsmap.SetAt(0x48869360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48869360>); - m_dsmap.SetAt(0x48884060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884060>); - m_dsmap.SetAt(0x48884760, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884760>); - m_dsmap.SetAt(0x488a8060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488a8060>); - m_dsmap.SetAt(0x488e8760, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8760>); - m_dsmap.SetAt(0x488e9360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e9360>); - m_dsmap.SetAt(0x490e8060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8060>); - m_dsmap.SetAt(0x4c83964c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c83964c>); - m_dsmap.SetAt(0x4c839660, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c839660>); + 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% // rumble roses - m_dsmap.SetAt(0x1fe78164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe78164>); - m_dsmap.SetAt(0x1fe79164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe79164>); - m_dsmap.SetAt(0x48804164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804164>); - m_dsmap.SetAt(0x48804964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804964>); - m_dsmap.SetAt(0x48838164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48838164>); - m_dsmap.SetAt(0x48868964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868964>); - m_dsmap.SetAt(0x4886b964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886b964>); - m_dsmap.SetAt(0x48878164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878164>); - m_dsmap.SetAt(0x48878964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878964>); - m_dsmap.SetAt(0x4887b164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887b164>); - m_dsmap.SetAt(0x4887b964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887b964>); - m_dsmap.SetAt(0x4887bf64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887bf64>); - m_dsmap.SetAt(0x488a0064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488a0064>); - m_dsmap.SetAt(0x488e0b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e0b64>); - m_dsmap.SetAt(0x490e804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e804c>); - m_dsmap.SetAt(0x4c48484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c48484c>); - m_dsmap.SetAt(0x4c830164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c830164>); - m_dsmap.SetAt(0x4c8a0064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8a0064>); - m_dsmap.SetAt(0x4c8e0b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8e0b64>); - m_dsmap.SetAt(0x4c8e8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8e8864>); - m_dsmap.SetAt(0x4c8e8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8e8964>); - m_dsmap.SetAt(0x4c8e8b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8e8b64>); - m_dsmap.SetAt(0x55384874, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x55384874>); + 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% - // dmc (fixme) + // dmc - m_dsmap.SetAt(0x1fe0424c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe0424c>); - m_dsmap.SetAt(0x1fe39058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe39058>); - m_dsmap.SetAt(0x1fe59068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe59068>); - m_dsmap.SetAt(0x1fe68968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68968>); - m_dsmap.SetAt(0x1fe78068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe78068>); - m_dsmap.SetAt(0x1fe7814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe7814c>); - m_dsmap.SetAt(0x1fe78158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe78158>); - m_dsmap.SetAt(0x1fea8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fea8968>); - m_dsmap.SetAt(0x1fee8168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8168>); - m_dsmap.SetAt(0x1fee8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8968>); - m_dsmap.SetAt(0x1fee8978, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee8978>); - m_dsmap.SetAt(0x45204078, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x45204078>); - m_dsmap.SetAt(0x4520424c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4520424c>); - m_dsmap.SetAt(0x48804078, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804078>); - m_dsmap.SetAt(0x48810068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48810068>); - m_dsmap.SetAt(0x48830068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48830068>); - m_dsmap.SetAt(0x48878058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878058>); - m_dsmap.SetAt(0x48878168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878168>); - m_dsmap.SetAt(0x488e8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8968>); - m_dsmap.SetAt(0x49068168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068168>); - m_dsmap.SetAt(0x49078168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078168>); - m_dsmap.SetAt(0x490e8168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8168>); - m_dsmap.SetAt(0x490e8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8968>); - m_dsmap.SetAt(0x4c43804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c43804c>); - m_dsmap.SetAt(0x4c839068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c839068>); - m_dsmap.SetAt(0x4d068968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068968>); - m_dsmap.SetAt(0x4d0e8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d0e8968>); - m_dsmap.SetAt(0x54204078, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x54204078>); - m_dsmap.SetAt(0x5420424c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5420424c>); - m_dsmap.SetAt(0x5fe30868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe30868>); + 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% // xenosaga 2 - m_dsmap.SetAt(0x1fe04067, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04067>); - m_dsmap.SetAt(0x1fe18054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe18054>); - m_dsmap.SetAt(0x1fe58174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe58174>); - m_dsmap.SetAt(0x1fe68064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68064>); - m_dsmap.SetAt(0x1fe68864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68864>); - m_dsmap.SetAt(0x1fe78174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe78174>); - m_dsmap.SetAt(0x1fe8404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe8404c>); - m_dsmap.SetAt(0x1fe84064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe84064>); - m_dsmap.SetAt(0x1fe84864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe84864>); - m_dsmap.SetAt(0x1fea8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fea8864>); - m_dsmap.SetAt(0x1fea8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fea8964>); - m_dsmap.SetAt(0x1fee804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee804c>); - m_dsmap.SetAt(0x1fee884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee884c>); - m_dsmap.SetAt(0x1fee9064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fee9064>); - m_dsmap.SetAt(0x48468864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48468864>); - m_dsmap.SetAt(0x48804074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804074>); - m_dsmap.SetAt(0x48839054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48839054>); - m_dsmap.SetAt(0x48868164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868164>); - m_dsmap.SetAt(0x488688e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488688e4>); - m_dsmap.SetAt(0x488a88e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488a88e4>); - m_dsmap.SetAt(0x4901004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4901004c>); - m_dsmap.SetAt(0x4905904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4905904c>); - m_dsmap.SetAt(0x49068164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068164>); - m_dsmap.SetAt(0x49069064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49069064>); - m_dsmap.SetAt(0x49078164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078164>); - m_dsmap.SetAt(0x49079164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49079164>); - m_dsmap.SetAt(0x4946824c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4946824c>); - m_dsmap.SetAt(0x4947824c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4947824c>); - m_dsmap.SetAt(0x4a478164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a478164>); - m_dsmap.SetAt(0x4a878164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a878164>); - m_dsmap.SetAt(0x4b078164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b078164>); - m_dsmap.SetAt(0x4c404054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c404054>); - m_dsmap.SetAt(0x4c804054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c804054>); - m_dsmap.SetAt(0x4c839054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c839054>); - m_dsmap.SetAt(0x4d004054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d004054>); - m_dsmap.SetAt(0x4d004064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d004064>); - m_dsmap.SetAt(0x4d03804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d03804c>); - m_dsmap.SetAt(0x4d039054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d039054>); - m_dsmap.SetAt(0x4d068064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068064>); - m_dsmap.SetAt(0x4d068864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068864>); - m_dsmap.SetAt(0x4d069064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d069064>); - m_dsmap.SetAt(0x51229064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x51229064>); + 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% // nfs mw - m_dsmap.SetAt(0x1fe68168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68168>); - m_dsmap.SetAt(0x1fe6816a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe6816a>); - m_dsmap.SetAt(0x1fe6894e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe6894e>); - m_dsmap.SetAt(0x1fe6896a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe6896a>); - m_dsmap.SetAt(0x1fe78168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe78168>); - m_dsmap.SetAt(0x4805904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4805904c>); - m_dsmap.SetAt(0x4882814e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4882814e>); - m_dsmap.SetAt(0x4883814e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883814e>); - m_dsmap.SetAt(0x48838168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48838168>); - m_dsmap.SetAt(0x48838968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48838968>); - m_dsmap.SetAt(0x4886816a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886816a>); - m_dsmap.SetAt(0x4886896a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886896a>); - m_dsmap.SetAt(0x48869164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48869164>); - m_dsmap.SetAt(0x48878968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878968>); - m_dsmap.SetAt(0x4906816a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4906816a>); - m_dsmap.SetAt(0x49068964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068964>); - m_dsmap.SetAt(0x49068968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068968>); - m_dsmap.SetAt(0x4906896a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4906896a>); - m_dsmap.SetAt(0x4907816a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907816a>); - m_dsmap.SetAt(0x49078964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078964>); - m_dsmap.SetAt(0x49078968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078968>); - m_dsmap.SetAt(0x4927904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4927904c>); - m_dsmap.SetAt(0x4a838164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a838164>); - m_dsmap.SetAt(0x4a838964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a838964>); - m_dsmap.SetAt(0x4a83904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a83904c>); - m_dsmap.SetAt(0x4b004064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b004064>); - m_dsmap.SetAt(0x4b004068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b004068>); - m_dsmap.SetAt(0x4b004864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b004864>); - m_dsmap.SetAt(0x4b004868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b004868>); - m_dsmap.SetAt(0x4b028064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b028064>); - m_dsmap.SetAt(0x4b028068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b028068>); - m_dsmap.SetAt(0x4b028864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b028864>); - m_dsmap.SetAt(0x4b028868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b028868>); - m_dsmap.SetAt(0x4b038164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b038164>); - m_dsmap.SetAt(0x4b038964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b038964>); - m_dsmap.SetAt(0x4c83004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c83004c>); - m_dsmap.SetAt(0x4c83804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c83804c>); - m_dsmap.SetAt(0x4c83804e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c83804e>); - m_dsmap.SetAt(0x4d03904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d03904c>); - m_dsmap.SetAt(0x4d03914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d03914c>); - m_dsmap.SetAt(0x5127904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5127904c>); - m_dsmap.SetAt(0x5420404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5420404c>); - m_dsmap.SetAt(0x5420404d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5420404d>); - m_dsmap.SetAt(0x5420404e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5420404e>); - m_dsmap.SetAt(0x5fe1904e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe1904e>); - m_dsmap.SetAt(0x5fe19064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe19064>); - m_dsmap.SetAt(0x5fe78064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe78064>); + 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% // berserk - m_dsmap.SetAt(0x48804165, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804165>); - m_dsmap.SetAt(0x4883104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883104c>); - m_dsmap.SetAt(0x4887804f, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887804f>); - m_dsmap.SetAt(0x49004874, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004874>); - m_dsmap.SetAt(0x49078864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078864>); - m_dsmap.SetAt(0x4c8eb964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8eb964>); - m_dsmap.SetAt(0x4c8fb164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8fb164>); - m_dsmap.SetAt(0x4c8fb964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8fb964>); + m_dsmap.SetAt(0x4c8e8b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8e8b64>); // 38.62% + m_dsmap.SetAt(0x4c8fb964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8fb964>); // 13.39% // castlevania - m_dsmap.SetAt(0x1fe1004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe1004c>); - m_dsmap.SetAt(0x1fe3104e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3104e>); - m_dsmap.SetAt(0x1fe5904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe5904c>); - m_dsmap.SetAt(0x1fe78868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe78868>); - m_dsmap.SetAt(0x48878868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878868>); - m_dsmap.SetAt(0x488c8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488c8968>); - m_dsmap.SetAt(0x488eb168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488eb168>); - m_dsmap.SetAt(0x488eb968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488eb968>); - m_dsmap.SetAt(0x488f8068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f8068>); - m_dsmap.SetAt(0x490e9068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e9068>); - m_dsmap.SetAt(0x4d00407a, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d00407a>); + 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% // okami - m_dsmap.SetAt(0x1fe18058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe18058>); - m_dsmap.SetAt(0x45218058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x45218058>); - m_dsmap.SetAt(0x4881804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881804c>); - m_dsmap.SetAt(0x48838868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48838868>); - m_dsmap.SetAt(0x48839158, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48839158>); - m_dsmap.SetAt(0x48879058, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879058>); - m_dsmap.SetAt(0x48879068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879068>); - m_dsmap.SetAt(0x48884168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884168>); - m_dsmap.SetAt(0x48884968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884968>); - m_dsmap.SetAt(0x488f8168, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f8168>); - m_dsmap.SetAt(0x488f8968, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f8968>); - m_dsmap.SetAt(0x4a83804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a83804c>); - m_dsmap.SetAt(0x4c43904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c43904c>); - m_dsmap.SetAt(0x4c83104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c83104c>); - m_dsmap.SetAt(0x4d03104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d03104c>); - m_dsmap.SetAt(0x5fe59068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe59068>); - m_dsmap.SetAt(0x5fe7104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe7104c>); - m_dsmap.SetAt(0x5fe7904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe7904c>); + 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% // bully - m_dsmap.SetAt(0x1fe04077, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04077>); - m_dsmap.SetAt(0x1fe04864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04864>); - m_dsmap.SetAt(0x488e8a64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8a64>); - m_dsmap.SetAt(0x49404054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49404054>); - m_dsmap.SetAt(0x494e8a64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x494e8a64>); - m_dsmap.SetAt(0x4c20404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c20404c>); - m_dsmap.SetAt(0x4d068364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068364>); - m_dsmap.SetAt(0x4d068b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068b64>); - m_dsmap.SetAt(0x4d07834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d07834c>); - m_dsmap.SetAt(0x4d078364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d078364>); - m_dsmap.SetAt(0x4d078b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d078b64>); - m_dsmap.SetAt(0x510e8164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x510e8164>); - m_dsmap.SetAt(0x510e8964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x510e8964>); - m_dsmap.SetAt(0x5480404d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5480404d>); - m_dsmap.SetAt(0x5501904e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5501904e>); - m_dsmap.SetAt(0x5fe3104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe3104c>); + 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% // culdcept - m_dsmap.SetAt(0x1fe041e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe041e6>); - m_dsmap.SetAt(0x1fe049e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe049e6>); - m_dsmap.SetAt(0x1fe181e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe181e6>); - m_dsmap.SetAt(0x1fe191e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe191e6>); - m_dsmap.SetAt(0x1fe2a1e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe2a1e6>); - m_dsmap.SetAt(0x1fe2a9e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe2a9e6>); - m_dsmap.SetAt(0x1fe3104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3104c>); - m_dsmap.SetAt(0x1fe31066, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe31066>); - m_dsmap.SetAt(0x1fe381e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe381e6>); - m_dsmap.SetAt(0x1fe391e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe391e6>); - m_dsmap.SetAt(0x1fe3a1e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3a1e6>); - m_dsmap.SetAt(0x1fe3a9e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3a9e6>); - m_dsmap.SetAt(0x1fe581e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe581e6>); - m_dsmap.SetAt(0x1fe591e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe591e6>); - m_dsmap.SetAt(0x1fe781e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe781e6>); - m_dsmap.SetAt(0x1fe791e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe791e6>); - m_dsmap.SetAt(0x1fe991e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe991e6>); - m_dsmap.SetAt(0x1feaa1e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1feaa1e6>); - m_dsmap.SetAt(0x1feaa9e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1feaa9e6>); - m_dsmap.SetAt(0x1feba1e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1feba1e6>); - m_dsmap.SetAt(0x1fef81e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fef81e6>); - m_dsmap.SetAt(0x488049e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488049e6>); - m_dsmap.SetAt(0x488089e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488089e6>); - m_dsmap.SetAt(0x488181e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488181e6>); - m_dsmap.SetAt(0x488191e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488191e6>); - m_dsmap.SetAt(0x488281e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488281e6>); - m_dsmap.SetAt(0x488291e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488291e6>); - m_dsmap.SetAt(0x488381e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488381e6>); - m_dsmap.SetAt(0x488391e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488391e6>); - m_dsmap.SetAt(0x488581e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488581e6>); - m_dsmap.SetAt(0x490049e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490049e6>); - m_dsmap.SetAt(0x4d0049e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d0049e6>); - m_dsmap.SetAt(0x4d02a1e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d02a1e6>); - m_dsmap.SetAt(0x4d02a9e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d02a9e6>); - m_dsmap.SetAt(0x4d0381e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d0381e6>); - m_dsmap.SetAt(0x4d0391e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d0391e6>); - m_dsmap.SetAt(0x5422a1e6, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5422a1e6>); + 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% // suikoden 5 - m_dsmap.SetAt(0x1fe3934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3934c>); - m_dsmap.SetAt(0x40428068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x40428068>); - m_dsmap.SetAt(0x40428868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x40428868>); - m_dsmap.SetAt(0x404a8068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x404a8068>); - m_dsmap.SetAt(0x404a8868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x404a8868>); - m_dsmap.SetAt(0x4846834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4846834c>); - m_dsmap.SetAt(0x4847834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4847834c>); - m_dsmap.SetAt(0x48829368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48829368>); - m_dsmap.SetAt(0x4883834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883834c>); - m_dsmap.SetAt(0x48838368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48838368>); - m_dsmap.SetAt(0x4883934c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4883934c>); - m_dsmap.SetAt(0x488a8368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488a8368>); - m_dsmap.SetAt(0x488a8b68, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488a8b68>); - m_dsmap.SetAt(0x488a9368, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488a9368>); - m_dsmap.SetAt(0x49028068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49028068>); - m_dsmap.SetAt(0x49028868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49028868>); - m_dsmap.SetAt(0x4906834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4906834c>); - m_dsmap.SetAt(0x4907834c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907834c>); - m_dsmap.SetAt(0x490a8068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490a8068>); - m_dsmap.SetAt(0x490a8868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490a8868>); - m_dsmap.SetAt(0x4d068068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068068>); - m_dsmap.SetAt(0x4d068868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d068868>); + 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% // dq8 - m_dsmap.SetAt(0x1fe3914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3914c>); - m_dsmap.SetAt(0x48404164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48404164>); - m_dsmap.SetAt(0x488b0164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488b0164>); - m_dsmap.SetAt(0x488b0964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488b0964>); - m_dsmap.SetAt(0x48c3804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48c3804c>); - m_dsmap.SetAt(0x49004164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004164>); - m_dsmap.SetAt(0x4c83914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c83914c>); - m_dsmap.SetAt(0x5103804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5103804c>); - m_dsmap.SetAt(0x5103b04c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5103b04c>); - m_dsmap.SetAt(0x1fe7804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe7804c>); - m_dsmap.SetAt(0x48884164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884164>); - m_dsmap.SetAt(0x48884964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884964>); - m_dsmap.SetAt(0x490e914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e914c>); - m_dsmap.SetAt(0x490f914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490f914c>); + 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% // resident evil 4 - m_dsmap.SetAt(0x1fe18064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe18064>); - m_dsmap.SetAt(0x4886894c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4886894c>); - m_dsmap.SetAt(0x49004b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004b64>); - m_dsmap.SetAt(0x4903904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4903904c>); - m_dsmap.SetAt(0x4b068164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b068164>); - m_dsmap.SetAt(0x4c804164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c804164>); - m_dsmap.SetAt(0x4c828964, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c828964>); - m_dsmap.SetAt(0x4c879164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c879164>); - m_dsmap.SetAt(0x4d07814c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d07814c>); - m_dsmap.SetAt(0x5120404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5120404c>); - m_dsmap.SetAt(0x5483904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5483904c>); + 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% // tomoyo after - m_dsmap.SetAt(0x1fe38059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe38059>); - m_dsmap.SetAt(0x1fe39059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe39059>); - m_dsmap.SetAt(0x48404868, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48404868>); - m_dsmap.SetAt(0x48478068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48478068>); - m_dsmap.SetAt(0x48818068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48818068>); - m_dsmap.SetAt(0x48858068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48858068>); - m_dsmap.SetAt(0x49058068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49058068>); - m_dsmap.SetAt(0x4a858068, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a858068>); + 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% // .hack redemption - m_dsmap.SetAt(0x1fe04b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04b64>); - m_dsmap.SetAt(0x1fe1804d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe1804d>); - m_dsmap.SetAt(0x1fe1914c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe1914c>); - m_dsmap.SetAt(0x4123004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4123004c>); - m_dsmap.SetAt(0x48404074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48404074>); - m_dsmap.SetAt(0x48468064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48468064>); - m_dsmap.SetAt(0x48469064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48469064>); - m_dsmap.SetAt(0x48478064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48478064>); - m_dsmap.SetAt(0x48478864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48478864>); - m_dsmap.SetAt(0x48830064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48830064>); - m_dsmap.SetAt(0x48848064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48848064>); - m_dsmap.SetAt(0x48858064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48858064>); - m_dsmap.SetAt(0x48859064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48859064>); - m_dsmap.SetAt(0x48869364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48869364>); - m_dsmap.SetAt(0x48878b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878b64>); - m_dsmap.SetAt(0x48879364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879364>); - m_dsmap.SetAt(0x488a8b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488a8b64>); - m_dsmap.SetAt(0x488e9364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e9364>); - m_dsmap.SetAt(0x488f8364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f8364>); - m_dsmap.SetAt(0x488f9364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f9364>); - m_dsmap.SetAt(0x49004074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004074>); - m_dsmap.SetAt(0x49079064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49079064>); - m_dsmap.SetAt(0x4c41804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c41804c>); - m_dsmap.SetAt(0x4c41904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c41904c>); - m_dsmap.SetAt(0x4d00404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d00404c>); - m_dsmap.SetAt(0x5fe1004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe1004c>); + 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% // wild arms 5 - m_dsmap.SetAt(0x1fe19050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe19050>); - m_dsmap.SetAt(0x1fef8064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fef8064>); - m_dsmap.SetAt(0x4845804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4845804c>); - m_dsmap.SetAt(0x4845904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4845904c>); - m_dsmap.SetAt(0x48804854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804854>); - m_dsmap.SetAt(0x4885884c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885884c>); - m_dsmap.SetAt(0x48c68864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48c68864>); - m_dsmap.SetAt(0x4b068864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b068864>); - m_dsmap.SetAt(0x4d078064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d078064>); - m_dsmap.SetAt(0x4d078164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d078164>); - m_dsmap.SetAt(0x5fe19054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe19054>); - m_dsmap.SetAt(0x5fe39054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x5fe39054>); + 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% // shadow of the colossus - m_dsmap.SetAt(0x1fe04164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04164>); - m_dsmap.SetAt(0x1fe1004d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe1004d>); - m_dsmap.SetAt(0x484e8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x484e8864>); - m_dsmap.SetAt(0x48838864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48838864>); - m_dsmap.SetAt(0x48859364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48859364>); - m_dsmap.SetAt(0x48868b24, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868b24>); - m_dsmap.SetAt(0x488b0864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488b0864>); - m_dsmap.SetAt(0x488e8264, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8264>); - m_dsmap.SetAt(0x488f8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f8864>); - m_dsmap.SetAt(0x48938064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48938064>); - m_dsmap.SetAt(0x48939064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48939064>); - m_dsmap.SetAt(0x490c8364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490c8364>); - m_dsmap.SetAt(0x490e8364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8364>); - m_dsmap.SetAt(0x490f8064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490f8064>); - m_dsmap.SetAt(0x490f8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490f8864>); - m_dsmap.SetAt(0x688b8064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x688b8064>); - m_dsmap.SetAt(0x688b8864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x688b8864>); - m_dsmap.SetAt(0x688b9064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x688b9064>); + 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% // tales of redemption - m_dsmap.SetAt(0x4827824c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4827824c>); - m_dsmap.SetAt(0x48804254, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804254>); - m_dsmap.SetAt(0x48804b4c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804b4c>); - m_dsmap.SetAt(0x48804b74, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804b74>); - m_dsmap.SetAt(0x48868074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868074>); - m_dsmap.SetAt(0x48878374, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878374>); - m_dsmap.SetAt(0x48878864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878864>); - m_dsmap.SetAt(0x48879164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879164>); - m_dsmap.SetAt(0x48879374, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879374>); - m_dsmap.SetAt(0x488b9054, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488b9054>); - m_dsmap.SetAt(0x4907824c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4907824c>); - m_dsmap.SetAt(0x49078264, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078264>); - m_dsmap.SetAt(0x4c838064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c838064>); - m_dsmap.SetAt(0x4c838364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c838364>); - m_dsmap.SetAt(0x4c838854, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c838854>); - m_dsmap.SetAt(0x4c838b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c838b64>); + 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% // digital devil saga - m_dsmap.SetAt(0x1fe04053, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04053>); - m_dsmap.SetAt(0x1fe39070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe39070>); - m_dsmap.SetAt(0x40204250, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x40204250>); - m_dsmap.SetAt(0x48404050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48404050>); - m_dsmap.SetAt(0x48404870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48404870>); - m_dsmap.SetAt(0x48468070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48468070>); - m_dsmap.SetAt(0x484e8070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x484e8070>); - m_dsmap.SetAt(0x484e8870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x484e8870>); - m_dsmap.SetAt(0x484e9070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x484e9070>); - m_dsmap.SetAt(0x48804050, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804050>); - m_dsmap.SetAt(0x48804060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804060>); - m_dsmap.SetAt(0x48804150, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804150>); - m_dsmap.SetAt(0x48804360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804360>); - m_dsmap.SetAt(0x48804b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804b60>); - m_dsmap.SetAt(0x48804b70, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804b70>); - m_dsmap.SetAt(0x48804f50, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48804f50>); - m_dsmap.SetAt(0x48858360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48858360>); - m_dsmap.SetAt(0x48868b70, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48868b70>); - m_dsmap.SetAt(0x48878060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878060>); - m_dsmap.SetAt(0x48878150, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878150>); - m_dsmap.SetAt(0x48878360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878360>); - m_dsmap.SetAt(0x48878750, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878750>); - m_dsmap.SetAt(0x48879360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879360>); - m_dsmap.SetAt(0x48879750, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48879750>); - m_dsmap.SetAt(0x48884360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884360>); - m_dsmap.SetAt(0x48884870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884870>); - m_dsmap.SetAt(0x48884b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884b60>); - m_dsmap.SetAt(0x48884b70, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48884b70>); - m_dsmap.SetAt(0x488a8b70, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488a8b70>); - m_dsmap.SetAt(0x488e8060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8060>); - m_dsmap.SetAt(0x488e8370, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8370>); - m_dsmap.SetAt(0x488e8860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8860>); - m_dsmap.SetAt(0x488e8b70, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488e8b70>); - m_dsmap.SetAt(0x488f8360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488f8360>); - m_dsmap.SetAt(0x4890404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4890404c>); - m_dsmap.SetAt(0x48904270, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48904270>); - m_dsmap.SetAt(0x4890484c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4890484c>); - m_dsmap.SetAt(0x48904a70, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48904a70>); - m_dsmap.SetAt(0x4897904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4897904c>); - m_dsmap.SetAt(0x4898404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4898404c>); - m_dsmap.SetAt(0x49004070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004070>); - m_dsmap.SetAt(0x49004870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004870>); - m_dsmap.SetAt(0x49004b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004b60>); - m_dsmap.SetAt(0x49004f50, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49004f50>); - m_dsmap.SetAt(0x49028060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49028060>); - m_dsmap.SetAt(0x49028860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49028860>); - m_dsmap.SetAt(0x49048060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49048060>); - m_dsmap.SetAt(0x49048860, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49048860>); - m_dsmap.SetAt(0x49068060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068060>); - m_dsmap.SetAt(0x49068070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068070>); - m_dsmap.SetAt(0x49068870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49068870>); - m_dsmap.SetAt(0x49078360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078360>); - m_dsmap.SetAt(0x49078750, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078750>); - m_dsmap.SetAt(0x49079360, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49079360>); - m_dsmap.SetAt(0x4908404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4908404c>); - m_dsmap.SetAt(0x49084070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49084070>); - m_dsmap.SetAt(0x49084870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49084870>); - m_dsmap.SetAt(0x490e8070, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8070>); - m_dsmap.SetAt(0x490e8870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x490e8870>); - m_dsmap.SetAt(0x4910404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4910404c>); - m_dsmap.SetAt(0x4a878060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a878060>); - m_dsmap.SetAt(0x4a879060, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a879060>); - m_dsmap.SetAt(0x51284870, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x51284870>); - m_dsmap.SetAt(0x51284b60, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x51284b60>); + 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% // dbzbt2 - m_dsmap.SetAt(0x1fe3004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe3004c>); - m_dsmap.SetAt(0x4881904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881904c>); - m_dsmap.SetAt(0x488391cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488391cc>); - m_dsmap.SetAt(0x4885904e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885904e>); - m_dsmap.SetAt(0x48859074, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48859074>); - m_dsmap.SetAt(0x488781cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488781cc>); - m_dsmap.SetAt(0x48878674, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48878674>); - m_dsmap.SetAt(0x4887874c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887874c>); - m_dsmap.SetAt(0x488791cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x488791cc>); - m_dsmap.SetAt(0x4887970c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887970c>); - m_dsmap.SetAt(0x4887974c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4887974c>); - m_dsmap.SetAt(0x48968064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48968064>); - m_dsmap.SetAt(0x48968864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48968864>); - m_dsmap.SetAt(0x4897804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4897804c>); - m_dsmap.SetAt(0x4a40404c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a40404c>); - m_dsmap.SetAt(0x4a83104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a83104c>); - m_dsmap.SetAt(0x4b069064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b069064>); - m_dsmap.SetAt(0x4b07904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4b07904c>); - m_dsmap.SetAt(0x4c45904e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c45904e>); - m_dsmap.SetAt(0x4c469064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c469064>); - m_dsmap.SetAt(0x4c80404e, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c80404e>); - m_dsmap.SetAt(0x4c81004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c81004c>); - m_dsmap.SetAt(0x4c8391cc, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c8391cc>); - m_dsmap.SetAt(0x4c869064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c869064>); - m_dsmap.SetAt(0x4c904064, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c904064>); - m_dsmap.SetAt(0x4d03004c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4d03004c>); - m_dsmap.SetAt(0x543081e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x543081e4>); - m_dsmap.SetAt(0x4a87804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a87804c>); - m_dsmap.SetAt(0x4a87904c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a87904c>); - m_dsmap.SetAt(0x543089e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x543089e4>); + 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% // dbzbt3 - m_dsmap.SetAt(0x4881104c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4881104c>); - m_dsmap.SetAt(0x489081e4, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x489081e4>); - m_dsmap.SetAt(0x4917804c, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4917804c>); - m_dsmap.SetAt(0x49268864, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49268864>); - m_dsmap.SetAt(0x4a879164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4a879164>); - - // dbz sagas + 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% // disgaea 2 - m_dsmap.SetAt(0x1fe04364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe04364>); - m_dsmap.SetAt(0x1fe68174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe68174>); - m_dsmap.SetAt(0x1fe69174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe69174>); - m_dsmap.SetAt(0x1fe79174, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x1fe79174>); - m_dsmap.SetAt(0x48468364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48468364>); - m_dsmap.SetAt(0x48468b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48468b64>); - m_dsmap.SetAt(0x48478364, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48478364>); - m_dsmap.SetAt(0x48478b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48478b64>); - m_dsmap.SetAt(0x48820b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x48820b64>); - m_dsmap.SetAt(0x49078b64, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49078b64>); - m_dsmap.SetAt(0x4c469164, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4c469164>); - - // resident evil code veronica - - // Gundam Seed Destiny OMNI VS ZAFT II PLUS - - // grandia extreme - - // the punisher - - // ico - - // kuon - - // virtual tennis 2 - - // one piece grand battle 3 - - // one piece grand adventure - - // enthusai - - // prince of tennis - - // crash wrath of cortex - - // hxh - - // ys 1/2 eternal story - - // sbam 2 - - // armored core 3 - - // bloody roar - - // guitar hero - - // aerial planet + 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% // gradius 5 - // ferrari f355 challenge + 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% - // onimusha 3 + // tales of abyss - // king of fighters xi + 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% + + // 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% // nba 2k8 - // mana khemia + 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% + + // 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% + + // 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% + + // 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% + + // 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% + + // 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% + + // 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% // shadow hearts - // tourist trophy + 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% - // ar tonelico + // 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% + + // 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% + + // 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% + + // 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% + + // 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% + + // 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% + + // 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% + + // 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% + + // 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% + + // 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% + + // 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% + + // mana khemia + + m_dsmap.SetAt(0x4885904d, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x4885904d>); // 10.84% + m_dsmap.SetAt(0x49038059, (DrawScanlinePtr)&GSDrawScanline::DrawScanlineExT<0x49038059>); // 30.86% // ar tonelico 2 - // svr2k8 + 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% + + // 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% + + // 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% + + // 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% + + // 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% + + // 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% + + // 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% + + // prince of tennis + + // ar tonelico + + // dbz sagas // remember 11 - // tales of abyss + // tourist trophy + + // svr2k8 // tokyo bus guide @@ -2390,8 +2581,6 @@ void GSDrawScanline::Init() // mgs3s1 - // rouge galaxy - // god of war #endif diff --git a/gsdx/GSDrawScanline.h b/gsdx/GSDrawScanline.h index 4668843..1461012 100644 --- a/gsdx/GSDrawScanline.h +++ b/gsdx/GSDrawScanline.h @@ -100,29 +100,29 @@ __declspec(align(16)) struct GSScanlineParam const DWORD* clut; DWORD tw; + GSLocalMemory::Offset* fbo; + GSLocalMemory::Offset* zbo; + DWORD fm, zm; }; class GSDrawScanline : public GSAlignedClass<16>, public IDrawScanline { - GSScanlineEnvironment m_env; - - struct Offset + struct ActiveDrawScanlinePtr { - GSVector4i row[1024]; - int* col[4]; - DWORD hash; + UINT64 frame; + UINT64 frames; + __int64 ticks; + __int64 pixels; + DrawScanlinePtr dsf; }; - CRBMapC m_omap; - Offset* m_fbo; - Offset* m_zbo; + GSScanlineEnvironment m_env; - void SetupOffset(Offset*& co, DWORD bp, DWORD bw, DWORD psm); - void FreeOffsets(); - - DrawScanlinePtr m_ds[4][4][4][2], m_dsf; - CRBMap m_dsmap, m_dsmap2; + DrawScanlinePtr m_ds[4][4][4][2]; + CRBMap m_dsmap; + CRBMap m_dsmap_active; + ActiveDrawScanlinePtr* m_dsf; void Init(); @@ -153,18 +153,31 @@ 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); + template + void DrawSolidRectT(const GSVector4i* row, int* col, const GSVector4i& r, DWORD c, DWORD m); + + template + __forceinline void FillRect(const GSVector4i* row, int* col, const GSVector4i& r, const GSVector4i& c, const GSVector4i& m); + + template + __forceinline void FillBlock(const GSVector4i* row, int* col, const GSVector4i& r, const GSVector4i& c, const GSVector4i& m); + protected: GSState* m_state; + int m_id; public: - GSDrawScanline(GSState* state); + GSDrawScanline(GSState* state, int id); virtual ~GSDrawScanline(); // IDrawScanline - bool SetupDraw(const GSRasterizerData* data); + bool BeginDraw(const GSRasterizerData* data); + 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/GSLocalMemory.cpp b/gsdx/GSLocalMemory.cpp index 3a86dc0..4379b1c 100644 --- a/gsdx/GSLocalMemory.cpp +++ b/gsdx/GSLocalMemory.cpp @@ -386,6 +386,67 @@ GSLocalMemory::GSLocalMemory() GSLocalMemory::~GSLocalMemory() { VirtualFree(m_vm8, 0, MEM_RELEASE); + + POSITION pos = m_omap.GetHeadPosition(); + + while(pos) + { + Offset* o = m_omap.GetNextValue(pos); + + for(int i = 0; i < countof(o->col); i++) + { + _aligned_free(o->col); + } + + _aligned_free(o); + } + + m_omap.RemoveAll(); +} + +GSLocalMemory::Offset* GSLocalMemory::GetOffset(DWORD bp, DWORD bw, DWORD psm, Offset* o) +{ + if(bw == 0) {ASSERT(0); return NULL;} + + ASSERT(m_psm[psm].trbpp > 8); // only for 16/24/32/8h/4hh/4hl formats where all columns are the same + + DWORD hash = bp | (bw << 14) | (psm << 20); + + if(!o || o->hash != hash) + { + CRBMap::CPair* pair = m_omap.Lookup(hash); + + if(pair) + { + o = pair->m_value; + } + else + { + o = (Offset*)_aligned_malloc(sizeof(Offset), 16); + + o->hash = hash; + + pixelAddress pa = m_psm[psm].pa; + + for(int i = 0, j = 2048; i < j; i++) + { + o->row[i] = GSVector4i((int)pa(0, i, bp, bw)); + } + + int* p = (int*)_aligned_malloc(sizeof(int) * (2048 + 3) * 4, 16); + + for(int i = 0; i < 4; i++) + { + o->col[i] = &p[2048 * i + ((4 - (i & 3)) & 3)]; + + memcpy(o->col[i], m_psm[psm].rowOffset[0], sizeof(int) * 2048); + } + + m_omap.SetAt(hash, o); + } + } + + return o; } bool GSLocalMemory::FillRect(const GSVector4i& r, DWORD c, DWORD psm, DWORD bp, DWORD bw) diff --git a/gsdx/GSLocalMemory.h b/gsdx/GSLocalMemory.h index 8a800bc..24786a2 100644 --- a/gsdx/GSLocalMemory.h +++ b/gsdx/GSLocalMemory.h @@ -75,6 +75,13 @@ public: GSClut m_clut; + struct Offset + { + GSVector4i row[2048]; + int* col[4]; + DWORD hash; + }; + protected: static DWORD pageOffset32[32][32][64]; static DWORD pageOffset32Z[32][32][64]; @@ -108,10 +115,16 @@ protected: friend class GSClut; + // + + CRBMapC m_omap; + public: GSLocalMemory(); virtual ~GSLocalMemory(); + Offset* GetOffset(DWORD bp, DWORD bw, DWORD psm, Offset* o = NULL); + // address static DWORD PageNumber32(int x, int y, DWORD bp, DWORD bw) diff --git a/gsdx/GSRasterizer.cpp b/gsdx/GSRasterizer.cpp index a42a6ce..c8ecacd 100644 --- a/gsdx/GSRasterizer.cpp +++ b/gsdx/GSRasterizer.cpp @@ -26,7 +26,6 @@ GSRasterizer::GSRasterizer(IDrawScanline* ds, int id, int threads) : m_ds(ds) , m_id(id) , m_threads(threads) - , m_pixels(0) { } @@ -35,42 +34,51 @@ GSRasterizer::~GSRasterizer() delete m_ds; } -int GSRasterizer::Draw(const GSRasterizerData* data) +void GSRasterizer::Draw(const GSRasterizerData* data) { - bool solid = m_ds->SetupDraw(data); + bool solid = m_ds->BeginDraw(data); const GSVector4i scissor = data->scissor; const GSVertexSW* vertices = data->vertices; const int count = data->count; - int prims = 0; + m_stats.Reset(); + + __int64 start = __rdtsc(); switch(data->primclass) { case GS_POINT_CLASS: - prims = count; + m_stats.prims = count; for(int i = 0; i < count; i++) DrawPoint(&vertices[i], scissor); break; case GS_LINE_CLASS: ASSERT(!(count & 1)); - prims = count / 2; + m_stats.prims = count / 2; for(int i = 0; i < count; i += 2) DrawLine(&vertices[i], scissor); break; case GS_TRIANGLE_CLASS: ASSERT(!(count % 3)); - prims = count / 3; + m_stats.prims = count / 3; for(int i = 0; i < count; i += 3) DrawTriangle(&vertices[i], scissor); break; case GS_SPRITE_CLASS: ASSERT(!(count & 1)); - prims = count / 2; + m_stats.prims = count / 2; for(int i = 0; i < count; i += 2) DrawSprite(&vertices[i], scissor, solid); break; default: __assume(0); } - return prims; + m_stats.ticks = __rdtsc() - start; + + m_ds->EndDraw(m_stats); +} + +void GSRasterizer::GetStats(GSRasterizerStats& stats) +{ + stats = m_stats; } void GSRasterizer::DrawPoint(const GSVertexSW* v, const GSVector4i& scissor) @@ -85,7 +93,7 @@ void GSRasterizer::DrawPoint(const GSVertexSW* v, const GSVector4i& scissor) { m_ds->DrawScanline(p.y, p.x, p.x + 1, *v); - m_pixels++; + m_stats.pixels++; } } } @@ -224,7 +232,7 @@ void GSRasterizer::DrawTriangleTop(GSVertexSW* v, const GSVector4i& scissor) if(top < scissor.y) top = scissor.y; if(bottom > scissor.w) bottom = scissor.w; - + if(top < bottom) { float py = (float)top - l.p.y; @@ -316,7 +324,7 @@ void GSRasterizer::DrawTriangleTopBottom(GSVertexSW* v, const GSVector4i& scisso GSVector4 dr; bool b = (longest.p > GSVector4::zero()).mask() & 1; - + if(b) { dl = v01 / v01.p.yyyy(); @@ -428,7 +436,7 @@ void GSRasterizer::DrawTriangleSection(int top, int bottom, GSVertexSW& l, const if(pixels > 0) { - m_pixels += pixels; + m_stats.pixels += pixels; GSVertexSW scan = l; @@ -496,7 +504,7 @@ void GSRasterizer::DrawSprite(const GSVertexSW* vertices, const GSVector4i& scis { m_ds->DrawSolidRect(r, scan); - m_pixels += (r.z - r.x) * (r.w - r.y); + m_stats.pixels += (r.z - r.x) * (r.w - r.y); } return; @@ -527,7 +535,7 @@ void GSRasterizer::DrawSprite(const GSVertexSW* vertices, const GSVector4i& scis { (m_ds->*dsf)(top, left, right, scan); - m_pixels += right - left; + m_stats.pixels += right - left; } } } @@ -563,13 +571,11 @@ GSRasterizerMT::~GSRasterizerMT() } } -int GSRasterizerMT::Draw(const GSRasterizerData* data) +void GSRasterizerMT::Draw(const GSRasterizerData* data) { - int prims = 0; - if(m_id == 0) { - prims = __super::Draw(data); + __super::Draw(data); } else { @@ -577,8 +583,6 @@ int GSRasterizerMT::Draw(const GSRasterizerData* data) InterlockedBitTestAndSet(m_sync, m_id); } - - return prims; } DWORD WINAPI GSRasterizerMT::StaticThreadProc(LPVOID lpParam) @@ -631,17 +635,19 @@ void GSRasterizerList::FreeRasterizers() } } -int GSRasterizerList::Draw(const GSRasterizerData* data) +void GSRasterizerList::Draw(const GSRasterizerData* data) { *m_sync = 0; - int prims = 0; + m_stats.Reset(); + + __int64 start = __rdtsc(); POSITION pos = GetTailPosition(); while(pos) { - prims += GetPrev(pos)->Draw(data); + GetPrev(pos)->Draw(data); } while(*m_sync) @@ -649,19 +655,22 @@ int GSRasterizerList::Draw(const GSRasterizerData* data) _mm_pause(); } - return prims; -} + m_stats.ticks = __rdtsc() - start; -int GSRasterizerList::GetPixels() -{ - int pixels = 0; - - POSITION pos = GetHeadPosition(); + pos = GetHeadPosition(); while(pos) { - pixels += GetNext(pos)->GetPixels(); - } + GSRasterizerStats s; - return pixels; + GetNext(pos)->GetStats(s); + + m_stats.pixels += s.pixels; + m_stats.prims = max(m_stats.prims, s.prims); + } +} + +void GSRasterizerList::GetStats(GSRasterizerStats& stats) +{ + stats = m_stats; } diff --git a/gsdx/GSRasterizer.h b/gsdx/GSRasterizer.h index 203a8c7..f4ce389 100644 --- a/gsdx/GSRasterizer.h +++ b/gsdx/GSRasterizer.h @@ -24,6 +24,7 @@ #include "GS.h" #include "GSVertexSW.h" +// #define FAST_DRAWSCANLINE __declspec(align(16)) class GSRasterizerData @@ -36,11 +37,21 @@ public: const void* param; }; +struct GSRasterizerStats +{ + __int64 ticks; + int prims; + int pixels; + + GSRasterizerStats() {Reset();} + void Reset() {ticks = 0; pixels = prims = 0;} +}; + class IRasterizer { public: - virtual int Draw(const GSRasterizerData* data) = 0; - virtual int GetPixels() = 0; + virtual void Draw(const GSRasterizerData* data) = 0; + virtual void GetStats(GSRasterizerStats& stats) = 0; }; class IDrawScanline @@ -50,11 +61,14 @@ public: virtual ~IDrawScanline() {} - virtual bool SetupDraw(const GSRasterizerData* data) = 0; + virtual bool BeginDraw(const GSRasterizerData* data) = 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; }; class GSRasterizer : public IRasterizer @@ -63,7 +77,7 @@ protected: IDrawScanline* m_ds; int m_id; int m_threads; - int m_pixels; + GSRasterizerStats m_stats; void DrawPoint(const GSVertexSW* v, const GSVector4i& scissor); void DrawLine(const GSVertexSW* v, const GSVector4i& scissor); @@ -82,8 +96,10 @@ public: // IRasterizer - int Draw(const GSRasterizerData* data); - int GetPixels() {int pixels = m_pixels; m_pixels = 0; return pixels;} + void Draw(const GSRasterizerData* data); + void GetStats(GSRasterizerStats& stats); + + void PrintStats() {m_ds->PrintStats();} }; class GSRasterizerMT : public GSRasterizer @@ -104,12 +120,13 @@ public: // IRasterizer - int Draw(const GSRasterizerData* data); + void Draw(const GSRasterizerData* data); }; class GSRasterizerList : public CAtlList, public IRasterizer { long* m_sync; + GSRasterizerStats m_stats; void FreeRasterizers(); @@ -125,12 +142,14 @@ public: for(int i = 0; i < threads; i++) { - AddTail(new GSRasterizerMT(new DS(parent), i, threads, m_sync)); + AddTail(new GSRasterizerMT(new DS(parent, i), i, threads, m_sync)); } } // IRasterizer - int Draw(const GSRasterizerData* data); - int GetPixels(); + void Draw(const GSRasterizerData* data); + void GetStats(GSRasterizerStats& stats); + + void PrintStats() {GetHead()->PrintStats();} }; \ No newline at end of file diff --git a/gsdx/GSRendererSW.h b/gsdx/GSRendererSW.h index 7046b06..7b6d6ee 100644 --- a/gsdx/GSRendererSW.h +++ b/gsdx/GSRendererSW.h @@ -35,6 +35,8 @@ protected: GSTextureCacheSW* m_tc; Texture m_texture[2]; bool m_reset; + GSLocalMemory::Offset* m_fbo; + GSLocalMemory::Offset* m_zbo; __declspec(align(16)) struct VertexTrace { @@ -83,6 +85,8 @@ protected: m_reset = false; } + + if((m_perfmon.GetFrame() & 255) == 0) m_rl.PrintStats(); } void ResetDevice() @@ -273,6 +277,12 @@ protected: p.vm = m_mem.m_vm32; + m_fbo = m_mem.GetOffset(context->FRAME.Block(), context->FRAME.FBW, context->FRAME.PSM, m_fbo); + m_zbo = m_mem.GetOffset(context->ZBUF.Block(), context->FRAME.FBW, context->ZBUF.PSM, m_zbo); + + p.fbo = m_fbo; + p.zbo = m_zbo; + p.sel.dw = 0; p.sel.fpsm = 3; @@ -574,19 +584,19 @@ __int64 start = __rdtsc(); data.count = m_count; data.param = &p; - int prims = m_rl.Draw(&data); - - m_perfmon.Put(GSPerfMon::Prim, prims); + m_rl.Draw(&data); + + GSRasterizerStats stats; + + m_rl.GetStats(stats); + m_perfmon.Put(GSPerfMon::Draw, 1); - - int pixels = m_rl.GetPixels(); - - m_perfmon.Put(GSPerfMon::Fillrate, pixels); - + m_perfmon.Put(GSPerfMon::Prim, stats.prims); + m_perfmon.Put(GSPerfMon::Fillrate, stats.pixels); /* __int64 diff = __rdtsc() - start; s_total += diff; -//if(pixels > 50000) +if(pixels >= 50000) fprintf(s_fp, "[%I64d, %d, %d, %d] %08x, diff = %I64d /prim = %I64d /pixel = %I64d \n", frame, PRIM->PRIM, prims, pixels, p.sel, diff, diff / prims, pixels > 0 ? diff / pixels : 0); */ // TODO @@ -636,7 +646,7 @@ fprintf(s_fp, "[%I64d, %d, %d, %d] %08x, diff = %I64d /prim = %I64d /pixel = %I6 if(s_dump) { CString str; - str.Format(_T("c:\\temp1\\_%05d_f%I64d_rt1_%05x_%d_%d.bmp"), s_n++, m_perfmon.GetFrame(), m_context->FRAME.Block(), m_context->FRAME.PSM); + str.Format(_T("c:\\temp1\\_%05d_f%I64d_rt1_%05x_%d.bmp"), s_n++, m_perfmon.GetFrame(), m_context->FRAME.Block(), m_context->FRAME.PSM); if(s_save) {m_mem.SaveBMP(str, m_context->FRAME.Block(), m_context->FRAME.FBW, m_context->FRAME.PSM, GetFrameSize(1).cx, 512);}//GetFrameSize(1).cy); str.Format(_T("c:\\temp1\\_%05d_f%I64d_rz1_%05x_%d.bmp"), s_n-1, m_perfmon.GetFrame(), m_context->ZBUF.Block(), m_context->ZBUF.PSM); if(s_savez) {m_mem.SaveBMP(str, m_context->ZBUF.Block(), m_context->FRAME.FBW, m_context->ZBUF.PSM, GetFrameSize(1).cx, 512);} @@ -651,6 +661,8 @@ fprintf(s_fp, "[%I64d, %d, %d, %d] %08x, diff = %I64d /prim = %I64d /pixel = %I6 public: GSRendererSW(BYTE* base, bool mt, void (*irq)(), int nloophack, const GSRendererSettings& rs, int threads) : GSRendererT(base, mt, irq, nloophack, rs) + , m_fbo(NULL) + , m_zbo(NULL) { m_rl.Create(this, threads); diff --git a/gsdx/GSState.cpp b/gsdx/GSState.cpp index 733fdef..6d94f5a 100644 --- a/gsdx/GSState.cpp +++ b/gsdx/GSState.cpp @@ -416,12 +416,7 @@ void GSState::GIFPackedRegHandlerSTQ(GIFPackedReg* r) void GSState::GIFPackedRegHandlerUV(GIFPackedReg* r) { - #if _M_SSE >= 0x401 - - GSVector4i v = GSVector4i::loadl(r); - m_v.UV.ai32[0] = (UINT32)GSVector4i::store(v.pu32(v)) & 0x3fff3fff; - - #elif _M_SSE >= 0x200 + #if _M_SSE >= 0x200 GSVector4i v = GSVector4i::loadl(r) & GSVector4i::x00003fff(); m_v.UV.ai32[0] = (UINT32)GSVector4i::store(v.ps32(v)); diff --git a/gsdx/GSTables.cpp b/gsdx/GSTables.cpp index a7eac16..ce5ef0e 100644 --- a/gsdx/GSTables.cpp +++ b/gsdx/GSTables.cpp @@ -22,21 +22,21 @@ #include "StdAfx.h" #include "GSTables.h" -const DWORD blockTable32[4][8] = { +const BYTE blockTable32[4][8] = { { 0, 1, 4, 5, 16, 17, 20, 21}, { 2, 3, 6, 7, 18, 19, 22, 23}, { 8, 9, 12, 13, 24, 25, 28, 29}, { 10, 11, 14, 15, 26, 27, 30, 31} }; -const DWORD blockTable32Z[4][8] = { +const BYTE blockTable32Z[4][8] = { { 24, 25, 28, 29, 8, 9, 12, 13}, { 26, 27, 30, 31, 10, 11, 14, 15}, { 16, 17, 20, 21, 0, 1, 4, 5}, { 18, 19, 22, 23, 2, 3, 6, 7} }; -const DWORD blockTable16[8][4] = { +const BYTE blockTable16[8][4] = { { 0, 2, 8, 10 }, { 1, 3, 9, 11 }, { 4, 6, 12, 14 }, @@ -47,7 +47,7 @@ const DWORD blockTable16[8][4] = { { 21, 23, 29, 31 } }; -const DWORD blockTable16S[8][4] = { +const BYTE blockTable16S[8][4] = { { 0, 2, 16, 18 }, { 1, 3, 17, 19 }, { 8, 10, 24, 26 }, @@ -58,7 +58,7 @@ const DWORD blockTable16S[8][4] = { { 13, 15, 29, 31 } }; -const DWORD blockTable16Z[8][4] = { +const BYTE blockTable16Z[8][4] = { { 24, 26, 16, 18 }, { 25, 27, 17, 19 }, { 28, 30, 20, 22 }, @@ -69,7 +69,7 @@ const DWORD blockTable16Z[8][4] = { { 13, 15, 5, 7 } }; -const DWORD blockTable16SZ[8][4] = { +const BYTE blockTable16SZ[8][4] = { { 24, 26, 8, 10 }, { 25, 27, 9, 11 }, { 16, 18, 0, 2 }, @@ -80,14 +80,14 @@ const DWORD blockTable16SZ[8][4] = { { 21, 23, 5, 7 } }; -const DWORD blockTable8[4][8] = { +const BYTE blockTable8[4][8] = { { 0, 1, 4, 5, 16, 17, 20, 21}, { 2, 3, 6, 7, 18, 19, 22, 23}, { 8, 9, 12, 13, 24, 25, 28, 29}, { 10, 11, 14, 15, 26, 27, 30, 31} }; -const DWORD blockTable4[8][4] = { +const BYTE blockTable4[8][4] = { { 0, 2, 8, 10 }, { 1, 3, 9, 11 }, { 4, 6, 12, 14 }, @@ -98,7 +98,7 @@ const DWORD blockTable4[8][4] = { { 21, 23, 29, 31 } }; -const DWORD columnTable32[8][8] = { +const BYTE columnTable32[8][8] = { { 0, 1, 4, 5, 8, 9, 12, 13 }, { 2, 3, 6, 7, 10, 11, 14, 15 }, { 16, 17, 20, 21, 24, 25, 28, 29 }, @@ -109,7 +109,7 @@ const DWORD columnTable32[8][8] = { { 50, 51, 54, 55, 58, 59, 62, 63 }, }; -const DWORD columnTable16[8][16] = { +const BYTE columnTable16[8][16] = { { 0, 2, 8, 10, 16, 18, 24, 26, 1, 3, 9, 11, 17, 19, 25, 27 }, { 4, 6, 12, 14, 20, 22, 28, 30, @@ -128,7 +128,7 @@ const DWORD columnTable16[8][16] = { 101, 103, 109, 111, 117, 119, 125, 127 }, }; -const DWORD columnTable8[16][16] = { +const BYTE columnTable8[16][16] = { { 0, 4, 16, 20, 32, 36, 48, 52, // column 0 2, 6, 18, 22, 34, 38, 50, 54 }, { 8, 12, 24, 28, 40, 44, 56, 60, @@ -163,7 +163,7 @@ const DWORD columnTable8[16][16] = { 203, 207, 219, 223, 235, 239, 251, 255 }, }; -const DWORD columnTable4[16][32] = { +const WORD columnTable4[16][32] = { { 0, 8, 32, 40, 64, 72, 96, 104, // column 0 2, 10, 34, 42, 66, 74, 98, 106, 4, 12, 36, 44, 68, 76, 100, 108, @@ -230,7 +230,7 @@ const DWORD columnTable4[16][32] = { 407, 415, 439, 447, 471, 479, 503, 511 }, }; -const DWORD clutTableT32I8[128] = +const BYTE clutTableT32I8[128] = { 0, 1, 4, 5, 8, 9, 12, 13, 2, 3, 6, 7, 10, 11, 14, 15, 64, 65, 68, 69, 72, 73, 76, 77, 66, 67, 70, 71, 74, 75, 78, 79, @@ -242,13 +242,13 @@ const DWORD clutTableT32I8[128] = 112, 113, 116, 117, 120, 121, 124, 125, 114, 115, 118, 119, 122, 123, 126, 127 }; -const DWORD clutTableT32I4[16] = +const BYTE clutTableT32I4[16] = { 0, 1, 4, 5, 8, 9, 12, 13, 2, 3, 6, 7, 10, 11, 14, 15 }; -const DWORD clutTableT16I8[32] = +const BYTE clutTableT16I8[32] = { 0, 2, 8, 10, 16, 18, 24, 26, 4, 6, 12, 14, 20, 22, 28, 30, @@ -256,7 +256,7 @@ const DWORD clutTableT16I8[32] = 5, 7, 13, 15, 21, 23, 29, 31 }; -const DWORD clutTableT16I4[16] = +const BYTE clutTableT16I4[16] = { 0, 2, 8, 10, 16, 18, 24, 26, 4, 6, 12, 14, 20, 22, 28, 30 diff --git a/gsdx/GSTables.h b/gsdx/GSTables.h index 56baca0..90808e3 100644 --- a/gsdx/GSTables.h +++ b/gsdx/GSTables.h @@ -21,19 +21,19 @@ #pragma once -extern const DWORD blockTable32[4][8]; -extern const DWORD blockTable32Z[4][8]; -extern const DWORD blockTable16[8][4]; -extern const DWORD blockTable16S[8][4]; -extern const DWORD blockTable16Z[8][4]; -extern const DWORD blockTable16SZ[8][4]; -extern const DWORD blockTable8[4][8]; -extern const DWORD blockTable4[8][4]; -extern const DWORD columnTable32[8][8]; -extern const DWORD columnTable16[8][16]; -extern const DWORD columnTable8[16][16]; -extern const DWORD columnTable4[16][32]; -extern const DWORD clutTableT32I8[128]; -extern const DWORD clutTableT32I4[16]; -extern const DWORD clutTableT16I8[32]; -extern const DWORD clutTableT16I4[16]; +extern const BYTE blockTable32[4][8]; +extern const BYTE blockTable32Z[4][8]; +extern const BYTE blockTable16[8][4]; +extern const BYTE blockTable16S[8][4]; +extern const BYTE blockTable16Z[8][4]; +extern const BYTE blockTable16SZ[8][4]; +extern const BYTE blockTable8[4][8]; +extern const BYTE blockTable4[8][4]; +extern const BYTE columnTable32[8][8]; +extern const BYTE columnTable16[8][16]; +extern const BYTE columnTable8[16][16]; +extern const WORD columnTable4[16][32]; +extern const BYTE clutTableT32I8[128]; +extern const BYTE clutTableT32I4[16]; +extern const BYTE clutTableT16I8[32]; +extern const BYTE clutTableT16I4[16];