mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-02 09:03:37 +00:00
Frame buffer emulation fixes:
save pointer to the load tile in the frame buffer. Game: Mario Tennis
This commit is contained in:
parent
7418f76968
commit
1341f7bf15
|
@ -9,6 +9,7 @@
|
|||
#include "DepthBuffer.h"
|
||||
#include "RSP.h"
|
||||
#include "RDP.h"
|
||||
#include "gDP.h"
|
||||
#include "Textures.h"
|
||||
#include "Combiner.h"
|
||||
#include "Types.h"
|
||||
|
@ -516,8 +517,8 @@ void FrameBuffer_ActivateBufferTexture( s16 t, FrameBuffer *buffer )
|
|||
const u32 factor = buffer->width << buffer->size >> 1;
|
||||
if (gSP.textureTile[t]->loadType == LOADTYPE_TILE)
|
||||
{
|
||||
buffer->texture->offsetS = gDP.loadTile->uls;
|
||||
buffer->texture->offsetT = (float)(buffer->height - (gDP.loadTile->ult + shift/factor));
|
||||
buffer->texture->offsetS = buffer->loadTile->uls;
|
||||
buffer->texture->offsetT = (float)(buffer->height - (buffer->loadTile->ult + shift/factor));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include "Types.h"
|
||||
#include "Textures.h"
|
||||
struct gDPTile;
|
||||
|
||||
struct FrameBuffer
|
||||
{
|
||||
|
@ -13,6 +14,7 @@ struct FrameBuffer
|
|||
|
||||
u32 startAddress, endAddress;
|
||||
u32 size, width, height, changed;
|
||||
gDPTile *loadTile;
|
||||
float scaleX, scaleY;
|
||||
};
|
||||
|
||||
|
|
20
gDP.cpp
20
gDP.cpp
|
@ -596,21 +596,19 @@ bool CheckForFrameBufferTexture(u32 _address)
|
|||
//FrameBuffer_RemoveBuffer(pBuffer->startAddress); // Does not work with Zelda MM
|
||||
return false;
|
||||
}
|
||||
pBuffer->loadTile = gDP.loadTile;
|
||||
gDP.loadTile->frameBuffer = pBuffer;
|
||||
gDP.loadTile->textureMode = TEXTUREMODE_FRAMEBUFFER;
|
||||
gDP.changed |= CHANGED_TMEM;
|
||||
|
||||
u32 nTile = 8;;
|
||||
if (gDP.tiles[gSP.texture.tile].tmem == gDP.loadTile->tmem)
|
||||
nTile = gSP.texture.tile;
|
||||
else if (gDP.tiles[gSP.texture.tile + 1].tmem == gDP.loadTile->tmem)
|
||||
nTile = gSP.texture.tile + 1;
|
||||
if (nTile < 8) {
|
||||
gDPTile & curTile = gDP.tiles[nTile];
|
||||
curTile.textureMode = gDP.loadTile->textureMode;
|
||||
curTile.loadType = gDP.loadTile->loadType;
|
||||
curTile.frameBuffer = gDP.loadTile->frameBuffer;
|
||||
curTile.imageAddress = gDP.loadTile->imageAddress;
|
||||
for (int nTile = gSP.texture.tile; nTile < 6; ++nTile) {
|
||||
if (gDP.tiles[nTile].tmem == gDP.loadTile->tmem) {
|
||||
gDPTile & curTile = gDP.tiles[nTile];
|
||||
curTile.textureMode = gDP.loadTile->textureMode;
|
||||
curTile.loadType = gDP.loadTile->loadType;
|
||||
curTile.frameBuffer = gDP.loadTile->frameBuffer;
|
||||
curTile.imageAddress = gDP.loadTile->imageAddress;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
Loading…
Reference in New Issue
Block a user