1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-04 10:03:36 +00:00

Code cleanup in gDP.

This commit is contained in:
Sergey Lipskiy 2014-09-22 21:52:59 +07:00
parent 87695ac8a7
commit 560f1d8118

55
gDP.cpp
View File

@ -259,8 +259,7 @@ void gDPSetColorImage( u32 format, u32 size, u32 width, u32 address )
{ {
address = RSP_SegmentToPhysical( address ); address = RSP_SegmentToPhysical( address );
if (gDP.colorImage.address != address || gDP.colorImage.width != width || gDP.colorImage.size != size) if (gDP.colorImage.address != address || gDP.colorImage.width != width || gDP.colorImage.size != size) {
{
u32 height = 1; u32 height = 1;
if (width == VI.width) { if (width == VI.width) {
if (width == gSP.viewport.width) if (width == gSP.viewport.width)
@ -274,7 +273,7 @@ void gDPSetColorImage( u32 format, u32 size, u32 width, u32 address )
else else
height = gSP.viewport.height; height = gSP.viewport.height;
if (config.frameBufferEmulation.enable)// && address != gDP.depthImageAddress) if (config.frameBufferEmulation.enable) // && address != gDP.depthImageAddress)
{ {
//if (gDP.colorImage.changed) //if (gDP.colorImage.changed)
frameBufferList().saveBuffer(address, (u16)format, (u16)size, (u16)width, height); frameBufferList().saveBuffer(address, (u16)format, (u16)size, (u16)width, height);
@ -597,19 +596,15 @@ void gDPLoadTile( u32 tile, u32 uls, u32 ult, u32 lrs, u32 lrt )
// Line given for 32-bit is half what it seems it should since they split the // Line given for 32-bit is half what it seems it should since they split the
// high and low words. I'm cheating by putting them together. // high and low words. I'm cheating by putting them together.
if (gDP.loadTile->size == G_IM_SIZ_32b) if (gDP.loadTile->size == G_IM_SIZ_32b) {
{
line = gDP.loadTile->line << 1; line = gDP.loadTile->line << 1;
Interleave = QWordInterleave; Interleave = QWordInterleave;
} } else {
else
{
line = gDP.loadTile->line; line = gDP.loadTile->line;
Interleave = DWordInterleave; Interleave = DWordInterleave;
} }
for (y = 0; y < height; y++) for (y = 0; y < height; ++y) {
{
UnswapCopy( src, dest, bpl ); UnswapCopy( src, dest, bpl );
if (y & 1) Interleave( dest, line ); if (y & 1) Interleave( dest, line );
@ -655,8 +650,7 @@ void gDPLoadBlock( u32 tile, u32 uls, u32 ult, u32 lrs, u32 dxt )
u64* src = (u64*)&RDRAM[address]; u64* src = (u64*)&RDRAM[address];
u64* dest = &TMEM[gDP.loadTile->tmem]; u64* dest = &TMEM[gDP.loadTile->tmem];
if (dxt > 0) if (dxt > 0) {
{
void (*Interleave)( void *mem, u32 numDWords ); void (*Interleave)( void *mem, u32 numDWords );
u32 line = (2047 + dxt) / dxt; u32 line = (2047 + dxt) / dxt;
@ -668,16 +662,14 @@ void gDPLoadBlock( u32 tile, u32 uls, u32 ult, u32 lrs, u32 dxt )
else else
Interleave = DWordInterleave; Interleave = DWordInterleave;
for (u32 y = 0; y < height; y++) for (u32 y = 0; y < height; ++y) {
{
UnswapCopy( src, dest, bpl ); UnswapCopy( src, dest, bpl );
if (y & 1) Interleave( dest, line ); if (y & 1) Interleave( dest, line );
src += line; src += line;
dest += line; dest += line;
} }
} } else
else
UnswapCopy( src, dest, bytes ); UnswapCopy( src, dest, bytes );
#ifdef DEBUG #ifdef DEBUG
@ -699,10 +691,8 @@ void gDPLoadTLUT( u32 tile, u32 uls, u32 ult, u32 lrs, u32 lrt )
u16 pal = (u16)((gDP.tiles[tile].tmem - 256) >> 4); u16 pal = (u16)((gDP.tiles[tile].tmem - 256) >> 4);
int i = 0; int i = 0;
while (i < count) while (i < count) {
{ for (u16 j = 0; (j < 16) && (i < count); ++j, ++i) {
for (u16 j = 0; (j < 16) && (i < count); j++, i++)
{
u16 color = swapword( src[i^1] ); u16 color = swapword( src[i^1] );
*dest = color; *dest = color;
@ -713,11 +703,11 @@ void gDPLoadTLUT( u32 tile, u32 uls, u32 ult, u32 lrs, u32 lrt )
dest += 4; dest += 4;
} }
gDP.paletteCRC16[pal] = CRC_CalculatePalette( 0xFFFFFFFF, &TMEM[256 + (pal << 4)], 16 ); gDP.paletteCRC16[pal] = CRC_CalculatePalette(0xFFFFFFFF, &TMEM[256 + (pal << 4)], 16);
pal++; pal++;
} }
gDP.paletteCRC256 = CRC_Calculate( 0xFFFFFFFF, gDP.paletteCRC16, 64 ); gDP.paletteCRC256 = CRC_Calculate(0xFFFFFFFF, gDP.paletteCRC16, 64);
gDP.changed |= CHANGED_TMEM; gDP.changed |= CHANGED_TMEM;
@ -782,8 +772,8 @@ void gDPFillRectangle( s32 ulx, s32 uly, s32 lrx, s32 lry )
{ {
OGLRender & render = video().getRender(); OGLRender & render = video().getRender();
if (gDP.otherMode.cycleType == G_CYC_FILL) { if (gDP.otherMode.cycleType == G_CYC_FILL) {
lrx++; ++lrx;
lry++; ++lry;
} }
if (gDP.depthImageAddress == gDP.colorImage.address) { if (gDP.depthImageAddress == gDP.colorImage.address) {
// Game may use depth texture as auxilary color texture. Example: Mario Tennis // Game may use depth texture as auxilary color texture. Example: Mario Tennis
@ -853,8 +843,7 @@ void gDPSetKeyGB(u32 cG, u32 sG, u32 wG, u32 cB, u32 sB, u32 wB )
void gDPTextureRectangle( f32 ulx, f32 uly, f32 lrx, f32 lry, s32 tile, f32 s, f32 t, f32 dsdx, f32 dtdy ) void gDPTextureRectangle( f32 ulx, f32 uly, f32 lrx, f32 lry, s32 tile, f32 s, f32 t, f32 dsdx, f32 dtdy )
{ {
if (gDP.otherMode.cycleType == G_CYC_COPY) if (gDP.otherMode.cycleType == G_CYC_COPY) {
{
dsdx = 1.0f; dsdx = 1.0f;
lrx += 1.0f; lrx += 1.0f;
lry += 1.0f; lry += 1.0f;
@ -876,13 +865,10 @@ void gDPTextureRectangle( f32 ulx, f32 uly, f32 lrx, f32 lry, s32 tile, f32 s, f
s = 0.0f; s = 0.0f;
f32 lrs, lrt; f32 lrs, lrt;
if (RSP.cmd == G_TEXRECTFLIP) if (RSP.cmd == G_TEXRECTFLIP) {
{
lrs = s + (lry - uly - 1) * dtdy; lrs = s + (lry - uly - 1) * dtdy;
lrt = t + (lrx - ulx - 1) * dsdx; lrt = t + (lrx - ulx - 1) * dsdx;
} } else {
else
{
lrs = s + (lrx - ulx - 1) * dsdx; lrs = s + (lrx - ulx - 1) * dsdx;
lrt = t + (lry - uly - 1) * dtdy; lrt = t + (lry - uly - 1) * dtdy;
} }
@ -891,13 +877,11 @@ void gDPTextureRectangle( f32 ulx, f32 uly, f32 lrx, f32 lry, s32 tile, f32 s, f
gDP.texRect.height = (u32)(max( lrt, t ) + dtdy); gDP.texRect.height = (u32)(max( lrt, t ) + dtdy);
float tmp; float tmp;
if (lrs < s) if (lrs < s) {
{
tmp = ulx; ulx = lrx; lrx = tmp; tmp = ulx; ulx = lrx; lrx = tmp;
tmp = s; s = lrs; lrs = tmp; tmp = s; s = lrs; lrs = tmp;
} }
if (lrt < t) if (lrt < t) {
{
tmp = uly; uly = lry; lry = tmp; tmp = uly; uly = lry; lry = tmp;
tmp = t; t = lrt; lrt = tmp; tmp = t; t = lrt; lrt = tmp;
} }
@ -967,4 +951,3 @@ void gDPNoOp()
DebugMsg( DEBUG_HIGH | DEBUG_IGNORED, "gDPNoOp();\n" ); DebugMsg( DEBUG_HIGH | DEBUG_IGNORED, "gDPNoOp();\n" );
#endif #endif
} }