1/*****************************************************************************\
2 Snes9x - Portable Super Nintendo Entertainment System (TM) emulator.
3 This file is licensed under the Snes9x License.
4 For further information, consult the LICENSE file in the root directory.
5\*****************************************************************************/
6
7#define _TILEIMPL_CPP_
8#include "tileimpl.h"
9
10namespace TileImpl {
11
12 template<class MATH, class BPSTART>
13 void HiresBase<MATH, BPSTART>::Draw(int N, int M, uint32 Offset, uint32 OffsetInLine, uint8 Pix, uint8 Z1, uint8 Z2)
14 {
15 if (Z1 > GFX.DB[Offset + 2 * N] && (M))
16 {
17 GFX.S[Offset + 2 * N + 1] = MATH::Calc(GFX.ScreenColors[Pix], GFX.SubScreen[Offset + 2 * N], GFX.SubZBuffer[Offset + 2 * N]);
18 if ((OffsetInLine + 2 * N ) != (SNES_WIDTH - 1) << 1)
19 GFX.S[Offset + 2 * N + 2] = MATH::Calc((GFX.ClipColors ? 0 : GFX.SubScreen[Offset + 2 * N + 2]), GFX.RealScreenColors[Pix], GFX.SubZBuffer[Offset + 2 * N]);
20 if ((OffsetInLine + 2 * N) == 0 || (OffsetInLine + 2 * N) == GFX.RealPPL)
21 GFX.S[Offset + 2 * N] = MATH::Calc((GFX.ClipColors ? 0 : GFX.SubScreen[Offset + 2 * N]), GFX.RealScreenColors[Pix], GFX.SubZBuffer[Offset + 2 * N]);
22 GFX.DB[Offset + 2 * N] = GFX.DB[Offset + 2 * N + 1] = Z2;
23 }
24 }
25
26
27 // hires double width
28 template struct Renderers<DrawTile16, Hires>;
29 template struct Renderers<DrawClippedTile16, Hires>;
30 template struct Renderers<DrawMosaicPixel16, Hires>;
31 template struct Renderers<DrawBackdrop16, Hires>;
32 template struct Renderers<DrawMode7MosaicBG1, Hires>;
33 template struct Renderers<DrawMode7BG1, Hires>;
34 template struct Renderers<DrawMode7MosaicBG2, Hires>;
35 template struct Renderers<DrawMode7BG2, Hires>;
36
37 // hires double width interlace
38 template struct Renderers<DrawTile16, HiresInterlace>;
39 template struct Renderers<DrawClippedTile16, HiresInterlace>;
40 template struct Renderers<DrawMosaicPixel16, HiresInterlace>;
41 //template struct Renderers<DrawBackdrop16, Hires>;
42 //template struct Renderers<DrawMode7MosaicBG1, Hires>;
43 //template struct Renderers<DrawMode7BG1, Hires>;
44 //template struct Renderers<DrawMode7MosaicBG2, Hires>;
45 //template struct Renderers<DrawMode7BG2, Hires>;
46
47} // namespace TileImpl
48