~ubuntu-branches/ubuntu/vivid/fceux/vivid

« back to all changes in this revision

Viewing changes to src/pputile.inc

  • Committer: Package Import Robot
  • Author(s): Joe Nahmias
  • Date: 2014-03-02 19:22:04 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20140302192204-9f0aehi5stfnhn7d
Tags: 2.2.2+dfsg0-1
* Imported Upstream version 2.2.2
  + remove patches merged upstream; refresh remaining
  + remove windows compiled help files and non-free Visual C files
* Use C++11 standard static assertion functionality
* fix upstream installation of support files
* New patch 0004-ignore-missing-windows-help-CHM-file.patch
* update d/copyright for new, renamed, deleted files
* d/control: bump std-ver to 3.9.5, no changes needed

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
uint8 *C; 
 
1
uint8 *C;
2
2
register uint8 cc;
3
3
uint32 vadr;
4
 
       
 
4
 
5
5
#ifndef PPUT_MMC5SP
6
 
        uint8 zz;
 
6
        register uint8 zz;
7
7
#else
8
 
    uint8 xs,ys;  
9
 
    xs=X1;
10
 
    ys=((scanline>>3)+MMC5HackSPScroll)&0x1F;
11
 
    if(ys>=0x1E) ys-=0x1E;
 
8
        uint8 xs, ys;
 
9
        xs = X1;
 
10
        ys = ((scanline >> 3) + MMC5HackSPScroll) & 0x1F;
 
11
        if (ys >= 0x1E) ys -= 0x1E;
12
12
#endif
13
 
        
14
 
if(X1>=2) {
15
 
        uint8 *S=PALRAM;
 
13
 
 
14
if (X1 >= 2) {
 
15
        uint8 *S = PALRAM;
16
16
        uint32 pixdata;
17
17
 
18
 
        pixdata=ppulut1[(pshift[0]>>(8-XOffset))&0xFF]|ppulut2[(pshift[1]>>(8-XOffset))&0xFF];
19
 
 
20
 
        pixdata|=ppulut3[XOffset|(atlatch<<3)];
21
 
        //printf("%02x ",ppulut3[XOffset|(atlatch<<3)]);
22
 
 
23
 
        P[0]=S[pixdata&0xF];
24
 
        pixdata>>=4;
25
 
        P[1]=S[pixdata&0xF];
26
 
        pixdata>>=4;
27
 
        P[2]=S[pixdata&0xF];
28
 
        pixdata>>=4;
29
 
        P[3]=S[pixdata&0xF];
30
 
        pixdata>>=4;
31
 
        P[4]=S[pixdata&0xF];
32
 
        pixdata>>=4;
33
 
        P[5]=S[pixdata&0xF];
34
 
        pixdata>>=4;
35
 
        P[6]=S[pixdata&0xF];
36
 
        pixdata>>=4;
37
 
        P[7]=S[pixdata&0xF];
38
 
        P+=8;
 
18
        pixdata = ppulut1[(pshift[0] >> (8 - XOffset)) & 0xFF] | ppulut2[(pshift[1] >> (8 - XOffset)) & 0xFF];
 
19
 
 
20
        pixdata |= ppulut3[XOffset | (atlatch << 3)];
 
21
 
 
22
        P[0] = S[pixdata & 0xF];
 
23
        pixdata >>= 4;
 
24
        P[1] = S[pixdata & 0xF];
 
25
        pixdata >>= 4;
 
26
        P[2] = S[pixdata & 0xF];
 
27
        pixdata >>= 4;
 
28
        P[3] = S[pixdata & 0xF];
 
29
        pixdata >>= 4;
 
30
        P[4] = S[pixdata & 0xF];
 
31
        pixdata >>= 4;
 
32
        P[5] = S[pixdata & 0xF];
 
33
        pixdata >>= 4;
 
34
        P[6] = S[pixdata & 0xF];
 
35
        pixdata >>= 4;
 
36
        P[7] = S[pixdata & 0xF];
 
37
        P += 8;
39
38
}
40
39
 
41
40
#ifdef PPUT_MMC5SP
42
 
        vadr=(MMC5HackExNTARAMPtr[xs|(ys<<5)]<<4)+(vofs&7);
 
41
        vadr = (MMC5HackExNTARAMPtr[xs | (ys << 5)] << 4) + (vofs & 7);
43
42
#else
44
 
        zz=RefreshAddr&0x1F;
45
 
        C=vnapage[(RefreshAddr>>10)&3];
46
 
        vadr=(C[RefreshAddr&0x3ff]<<4)+vofs;   /* Fetch name table byte. */
 
43
        zz = RefreshAddr & 0x1F;
 
44
        C = vnapage[(RefreshAddr >> 10) & 3];
 
45
        vadr = (C[RefreshAddr & 0x3ff] << 4) + vofs;    // Fetch name table byte.
47
46
#endif
48
47
 
49
48
#ifdef PPUT_HOOK
50
 
        PPU_hook(0x2000|(RefreshAddr&0xfff));
 
49
        PPU_hook(0x2000 | (RefreshAddr & 0xfff));
51
50
#endif
52
51
 
53
52
#ifdef PPUT_MMC5SP
54
 
        cc=MMC5HackExNTARAMPtr[0x3c0+(xs>>2)+((ys&0x1C)<<1)];
55
 
        cc=((cc >> ((xs&2) + ((ys&0x2)<<1))) &3);
 
53
        cc = MMC5HackExNTARAMPtr[0x3c0 + (xs >> 2) + ((ys & 0x1C) << 1)];
 
54
        cc = ((cc >> ((xs & 2) + ((ys & 0x2) << 1))) & 3);
56
55
#else
57
56
        #ifdef PPUT_MMC5CHR1
58
 
                cc=(MMC5HackExNTARAMPtr[RefreshAddr & 0x3ff] & 0xC0)>>6;
 
57
                cc = (MMC5HackExNTARAMPtr[RefreshAddr & 0x3ff] & 0xC0) >> 6;
59
58
        #else
60
 
                cc=C[0x3c0+(zz>>2)+((RefreshAddr&0x380)>>4)];  /* Fetch attribute table byte. */
61
 
                cc=((cc >> ((zz&2) + ((RefreshAddr&0x40)>>4))) &3);
 
59
                cc = C[0x3c0 + (zz >> 2) + ((RefreshAddr & 0x380) >> 4)];       // Fetch attribute table byte.
 
60
                cc = ((cc >> ((zz & 2) + ((RefreshAddr & 0x40) >> 4))) & 3);
62
61
        #endif
63
62
#endif
64
63
 
65
 
atlatch>>=2;
66
 
atlatch|=cc<<2;  
67
 
       
68
 
pshift[0]<<=8;
69
 
pshift[1]<<=8;
 
64
atlatch >>= 2;
 
65
atlatch |= cc << 2;
 
66
 
 
67
pshift[0] <<= 8;
 
68
pshift[1] <<= 8;
70
69
 
71
70
#ifdef PPUT_MMC5SP
72
 
        C = MMC5HackVROMPTR+vadr;
 
71
        C = MMC5HackVROMPTR + vadr;
73
72
        C += ((MMC5HackSPPage & 0x3f & MMC5HackVROMMask) << 12);
74
73
#else
75
74
        #ifdef PPUT_MMC5CHR1
76
75
                C = MMC5HackVROMPTR;
77
 
                C += (((MMC5HackExNTARAMPtr[RefreshAddr & 0x3ff]) & 0x3f & 
78
 
                        MMC5HackVROMMask) << 12) + (vadr & 0xfff);
79
 
                C += (MMC50x5130&0x3)<<18; //11-jun-2009 for kuja_killer
 
76
                C += (((MMC5HackExNTARAMPtr[RefreshAddr & 0x3ff]) & 0x3f & MMC5HackVROMMask) << 12) + (vadr & 0xfff);
 
77
                C += (MMC50x5130 & 0x3) << 18; //11-jun-2009 for kuja_killer
80
78
        #elif defined(PPUT_MMC5)
81
79
                C = MMC5BGVRAMADR(vadr);
82
80
        #else
88
86
        PPU_hook(vadr);
89
87
#endif
90
88
 
91
 
if(ScreenON)
92
 
        RENDER_LOG(vadr);
93
 
pshift[0]|=C[0];
94
 
if(ScreenON)
95
 
        RENDER_LOG(vadr + 8);
96
 
pshift[1]|=C[8];
 
89
#ifdef PPU_BGFETCH
 
90
        if (RefreshAddr & 1) {
 
91
                if(ScreenON)
 
92
                        RENDER_LOG(vadr + 8);
 
93
                pshift[0] |= C[8];
 
94
                pshift[1] |= C[8];
 
95
        } else {
 
96
                if(ScreenON)
 
97
                        RENDER_LOG(vadr);
 
98
                pshift[0] |= C[0];
 
99
                pshift[1] |= C[0];
 
100
        }
 
101
#else
 
102
        if(ScreenON)
 
103
                RENDER_LOG(vadr);
 
104
        pshift[0] |= C[0];
 
105
        if(ScreenON)
 
106
                RENDER_LOG(vadr + 8);
 
107
        pshift[1] |= C[8];
 
108
#endif
97
109
 
98
 
if((RefreshAddr&0x1f)==0x1f)
99
 
        RefreshAddr^=0x41F;
 
110
if ((RefreshAddr & 0x1f) == 0x1f)
 
111
        RefreshAddr ^= 0x41F;
100
112
else
101
113
        RefreshAddr++;
102
114
 
103
115
#ifdef PPUT_HOOK
104
 
        PPU_hook(0x2000|(RefreshAddr&0xfff));
 
116
        PPU_hook(0x2000 | (RefreshAddr & 0xfff));
105
117
#endif
106
118